为安全学习python,遇到su问题
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了为安全学习python,遇到su问题,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2761字,纯文字阅读大概需要4分钟。
内容图文
前言:我完全清楚,如果没有在测试机器上,这可能是非法的.我这样做是为了学习安全和渗透测试python的学习练习.这只能在我拥有并完全控制的linux机器上完成.
我正在学习python作为我的第一个脚本语言,希望能够在安全位置使用.在询问脚本的想法以帮助自学时,有人建议我为用户枚举创建一个.想法很简单,从没有sudo权限的帐户中删除/ etc / passwd中的用户名并尝试’su ‘使用我拥有的一个密码进入这些帐户.一种反向蛮力,而不是一个具有密码列表的用户,我使用单个密码和用户列表.
我的问题是,无论我如何处理此问题,脚本都会在“密码:”提示符处挂起或停止.我尝试了多种方法,从使用os.system并回显密码,将其作为变量传递,并使用pexpect模块.似乎没有什么工作.
当我谷歌它时,所有的建议都指向使用sudo,在这种情况下,sudo不是一个有效的选项,因为我有权访问的用户,没有sudo权限.
我对此非常绝望,只是为了完成挑战.我已经在IRC和我的所有编程向导朋友中询问了reddit,并且超出了回显“密码”| sudo -S su,由于用户不在sudoers文件中而无法工作,我很快就会出现问题.当我用echo“password”|尝试同样的事情时我得到su:必须从终端运行.这是#和$提示符.
这甚至可能吗?
解决方法:
问题是su和朋友直接从控制终端读取密码进行进程,而不是stdin.解决这个问题的方法是启动你自己的“伪终端”(pty).在python中,你可以用the pty module做到这一点.试一试.
编辑:python的pty模块的文档并没有真正解释任何内容,所以这里是pty设备的Unix手册页的一些上下文:
A pseudo terminal is a pair of character devices, a master
device and a slave device. The slave device provides to a process an
interface identical to that described in tty(4). However, whereas all
other devices which provide the interface described in tty(4) have a
hardware device of some sort behind them, the slave device has, instead,
another process manipulating it through the master half of the pseudo
terminal. That is, anything written on the master device is given to the
slave device as input and anything written on the slave device is presented as input on the master device. [emphasis mine]
让你的pty工作的最简单方法是使用pty.fork(),你可以像普通的fork一样使用它.这是一个简单的(真正极小的)例子.请注意,如果您读取的字符多于可用字符,则您的进程将会死锁:它将尝试从打开的管道读取,但是另一端的进程生成输出的唯一方法是,如果此进程发送了一些内容!
pid, fd = pty.fork()
if pid == 0:
# We're the child process: Switch to running a command
os.execl("/bin/cat", "cat", "-n")
print "Exec failed!!!!"
else:
# We're the parent process
# Send something to the child process
os.write(fd, "Hello, world!\n")
# Read the terminal's echo of what we typed
print os.read(fd, 14) ,
# Read command output
print os.read(fd, 22)
如果一切顺利,你应该看到:
Hello, world!
1 Hello, world!
由于这是一个学习练习,这里是我建议的阅读列表:man fork,man execl和python的subprocess和os模块(因为你已经在运行子进程,你可能已经知道了一些).请记住,在Unix和python中,文件描述符(只是一个数字)和文件对象之间存在差异,文件对象是带有方法的python对象(在C中它是一个结构等).玩得开心!
内容总结
以上是互联网集市为您收集整理的为安全学习python,遇到su问题全部内容,希望文章能够帮你解决为安全学习python,遇到su问题所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。