CTF

您所在的位置:网站首页 攻防脚本 CTF

CTF

2024-07-14 05:39| 来源: 网络整理| 查看: 265

防守&加固

靶机加固的前提:需要知道靶机的密码和权限

root权限可以做所有操作

web权限:只能加固web服务,mysql服务等

不知道靶机密码的情况

hydra爆破(kali自带)

123SSH 破解hydra -l 用户名 -p 密码字典 -t 线程 -vV -e ns ip sshhydra -l 用户名 -p 密码字典 -t 线程 -o save.log -vV ip ssh

python脚本爆破(需要安装paramiko库)

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657import sys, time, argparseimport paramikoclass ssh_brute(object): def __init__(self, host, port): self.host = host self.port = port def connect(self, host, port, username, password): ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) try: ssh.connect(hostname=host, port=port, username=username, password=str(password), timeout=0.01) ssh.close() except: print("The password:{password} error!".format(password=password)) ssh.close() return print("find it!\nusername:\033[1;32;40m{username} \npassword:{password}\033[0m".format(username=username, password=password)) exit() def getpassword(self): dict = "C:/Users/root/Desktop/dic.txt" #×ֵ䷾¶ with open(dict) as f: password = f.readlines() return password def main(self): host = self.host port = self.port username = "root" password = self.getpassword() print("[+]host:{host}".format(host=host)) print("[+]username:{username}".format(username=username)) for paw in password: paw = paw.strip("\n") self.connect(host, port, username, paw)def parse(): parse = argparse.ArgumentParser("a ssh brute force crack") parse.add_argument("-host", dest="host", default="10.20.60.13", help="This is to set ip") parse.add_argument("-port", dest="port", default="22", help="This is to set port default:22") args = parse.parse_args() return args.host, args.portdef main(): #host, port = parse() //ÃüÁîÐнâÎö host = '172.20.101.101' port = '22' ssh_brute(host, port).main()if __name__ == '__main__': main()

kali自带字典目录

1/usr/share/wordlists 可能会用到的操作ssh提供rsa公私钥连接方式1ssh -i 私钥位置 user@hostname 查看有那些用户1cat /etc/passwd | grep /bin/bash 可查看端口对应服务1cat /etc/service 查看开了哪些端口 是否存在后门1netstat -anp 1netstat -anp|grep "LISTEN"

查看nc对应的进程和端口(其他程序同理,如:bash、python、php等反弹shell)

1netstat -nlpta|grep -w nc

查看nc进程树

1ps aux|grep -w nc

根据pid查找程序绝对路径

1ls -l /proc/2765/ | grep -w exe

也可以用 lsof -p pid 命令

1lsof -p pid

按照关掉端口的方式杀掉即可

关闭端口的方式

1 . 强制关闭

1kill -9 端口号 监控日志命令1tail -f *.log scp实现ssh服务上传下载文件

上传

1scp [-P 端口] 本地文件路径 user@host:远程文件路径

下载

1scp [-P 端口] user@host:远程文件路径 本地文件路径 备份网站目录

打包网站 备份到/tmp目录下

备份到其他目录可能会因为没有权限而报错

1tar -czvf /tmp/html.tar.gz /var/www/html 根据备份的源码恢复网站123cd /tmptar -xzvf html.tar.gzmv /tmp/var/www/html/* /var/www/html/ 查找后门1find /var/www/html -name "*.php" |xargs egrep 'assert|eval|phpinfo\(\)|\(base64_decoolcode|shell_exec|passthru|file_put_contents\(\.\*\$|base64_decode\(' 查找flag的位置12345使用`find / -name *flag*` 或`grep -rn "flag" *` 类似的语句可以快速发现 flag 所在的地方,方便后续拿分 修改flag文件权限和设置不可更改

修改权限

1chmod 400 /root/flag

设置不可更改属性

1chattr +i /root/flag 克制不死马

强行kill掉进程后重启服务(不建议)

1ps -aux|grep ‘www-data’|awk ‘{print $2}’|xargs kill -9 写脚本不断删除 12345678910111213 干掉反弹shell

ps -ef / px -aux

出现www-data权限的/bin/sh一般为nc

如果有一些进程杀不掉可以尝试www-data权限去杀

kill.php

123


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3