首页
学习
活动
专区
圈层
工具
发布

翻译:Perl代码审计:Perl脚本中存在的问题与存在的安全风险

现在假设我们将统计数据文件转换为格式良好的HTML页面,为了方便起见,我们决定将它们存储在显示它们的Perl脚本所在的目录中。...@INC的问题与PATH的问题几乎相同有人可能会将您的Perl指向一个与您所期望的模块具有相同名称和执行相同操作的模块,但它也会在后台执行颠覆性操作。...setuid脚本 通常,Perl程序以执行它的用户的权限运行。通过创建脚本setuid,可以将其有效用户ID设置为能够访问实际用户不访问的资源的用户ID(即,包含程序的文件的所有者ID)。...由于通过CGI接口执行的程序是以运行web服务器的用户的权限运行的(通常是用户“nobody”,其权限非常有限),CGI程序员经常试图使用setuid技术让他们的脚本执行他们无法执行的技巧。...CGI脚本应该始终以尽可能低的权限运行。请注意,在setuid脚本中小心操作并不总能解决问题。某些操作系统的内核中存在bug,这使得setuid脚本本身就不安全。

4K51

【愚公系列】2023年06月 攻防世界-Web(i-got-id-200)

它可以接受从命令行传递过来的参数,并将它们传递给 Perl 脚本。然而,当不正确地使用 ARGV 变量时,可能会导致安全漏洞,例如任意文件读取和任意命令执行。...任意文件读取漏洞: 当 Perl 脚本中使用 ARGV 变量处理文件时,攻击者可以通过输入恶意构造的文件名来实现读取系统中任何文件的目的。例如: perl script.pl ../../...../etc/passwd 上面的命令将会读取读取系统的 /etc/passwd 文件。攻击者可以通过这种方式读取任何他有权限读取的文件。...例如: perl script.pl `ls -la` 上面的命令将会执行 ls -la 命令并返回结果。攻击者可以通过这种方式执行任何他有权限执行的命令。...试试 发现确实使用了param()函数,然后我们利用bash来进行读取当前目录下的文件。

27600
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    绕过Disable Functions来搞事情

    当遇到动态脚本请求时,Web服务器主进程就会Fork创建出一个新的进程来启动CGI程序,运行外部C程序或Perl、PHP脚本等,也就是将动态脚本交给CGI程序来处理。...任何具有MIME类型application/x-httpd-cgi或者被cgi-script处理器处理的文件都将被作为CGI脚本对待并由服务器运行,它的输出将被返回给客户端。...可以通过两种途径使文件成为CGI脚本,一种是文件具有已由AddType指令定义的扩展名,另一种是文件位于ScriptAlias目录中。...下载利用脚本后先对脚本像上面那样进行修改,然后将修改后的利用脚本上传到目标主机上,如果是web目录则直接传参执行命令,如果是其他有权限的目录,则将脚本包含进来再传参执行命令。...下载利用脚本后先对脚本像上面那样进行修改,然后将修改后的利用脚本上传到目标主机上,如果是web目录则直接传参执行命令,如果是其他有权限的目录,则将脚本包含进来再传参执行命令。

    5.4K40

    日志分析工具Awstats实战之Nginx篇

    -7.2.tar.gz mv awstats-7.2 /usr/local/awstats 由于wget下载下来的包中权限是非root的,所以这里要修改权限,否则稍后*.pl将无法运行 chown -...分析日志:运行后将这样的日志统计结果归档到一个awstats的数据库(纯文本)里; 然后是输出:分两种形式 1、一种是通过cgi程序读取统计结果数据库输出; 2、一种是运行后台脚本将输出导出成静态文件.../perl_cgi-dispatch.sock有读写权限,否则会报502错误。...7.2.tar.gz mv awstats-7.2 /usr/local/awstats 由于wget下载下来的包中权限是非root的,所以这里要修改权限,否则稍后*.pl将无法运行 chown -R...分析日志:运行后将这样的日志统计结果归档到一个awstats的数据库(纯文本)里; 然后是输出:分两种形式 1、一种是通过cgi程序读取统计结果数据库输出; 2、一种是运行后台脚本将输出导出成静态文件

    1.4K20

    php面试题(1)

    mkdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 rmdir() 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。...rename() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。...unlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。...copy() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。 检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。...检查被操作的目录是否与被执行的脚本有相同的 UID(所有者)。 symlink() 检查被操作的文件或目录是否与被执行的脚本有相同的 UID(所有者)。

    4.2K20

    JMeter详细使用手册

    Jmeter的工作原理 Jmeter可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。...6.2 简单控制器(Simple Controller) 作用:这是Jmeter里最简单的一个控制器,它可以让我们组织我们的采样器和其它的逻辑控制器(分组功能),提供一个块的结构和控制,并不具有任何的逻辑控制或运行时的功能...,如果是某个取样器的子节点,则该元件对其父子节点起作用,如果其父子节点不是取样器,则其作用域是该元件父节点下的其他所有后代节点(包括子节点,子节点的子节点) 12.2 元件的执行顺序 配置元件-前置处理器...它可以用于测试静态和动态资源例如静态文件、Java小服务程序、CGI脚本、Java 对象、数据库, FTP服务器, 等等。...url填写这个相同前缀了;另外,上面的url格式也只是个例子,表示域名后的部分。

    5.8K20

    【Linux网络】CGI技术

    CGI程序通常被放置在Web服务器的特定目录(如cgi-bin)中,并通过特定的URL路径进行访问。...服务器识别与转发:Web服务器识别出这是一个需要CGI程序处理的请求,并将请求转发给相应的CGI程序。这通常是通过检查请求的URL路径是否指向cgi-bin目录或具有.cgi后缀来实现的。...三、CGI技术的特点 跨平台性:CGI技术可以在多种操作系统和Web服务器上运行,具有很好的跨平台性。 灵活性:CGI程序可以用多种编程语言编写,如Perl、Python、PHP、C等。...五、CGI技术的安全性措施 为了保障CGI程序的安全性,开发者可以采取以下措施: 输入验证:对所有用户输入进行严格的验证和清理,以防止SQL注入、脚本注入等攻击。...综上所述,CGI技术是一种在Web服务器与外部应用程序之间进行交互的重要标准协议。它具有跨平台性、灵活性、动态内容生成和可扩展性等优点,但也存在性能问题和安全性问题等局限性。

    68610

    一次早期自动化构建的搭建过程

    也因为腾讯web端项目基本上都是使用的CGI,所以花了不少时间写整套的自动化编译脚本(全部是perl写的),当然里面对研发提出了编译文件Makefile的规范(后面有原理)。...// 编译控制脚本的存放目录 | |-- cgi-bin // qzone.build.isd.com 的cgi程序目录 | |-- htdocs...整个编译环境中各个工具都可以普通用户执行,比如user_*,但应该保证相应的源码目录有足够的读写权限. 1.5. 编译过程 ?...上图页面的信息来自相应的buildres.xml 注:由于源码目录下文件可能会被手工增删或改动,有时有些信息文件无法正确读取,这时php会发出警告,这些都是可以忽略的,可以通过/usr/local/lib...级别相同的目录意味着他们之间的编译顺序不影响结果,因此只按照目录字母顺序做简单排序), 不含关键字的目录级别为0, 比如: platform/src/comm 级别 16 platform/src/c5a

    1.4K20

    分解 - 命令注入

    同样,在基于Perl的应用程序中:易受攻击的代码假设攻击者提供了这样的域名: use CGI qw(:standard); $name = param(‘name’); $nslookup = “/path...并且,在基于Java的应用程序中:易受攻击的代码 下面的代码从系统属性中读取要执行的shell 脚本的名称。它受制于操作系统命令注入的第二种变体。...如果您无法直接检索结果:尝试打开一个带外通道返回您的计算机。...例如: dir > c:\inetpub\wwwroot\foo.txt 4.当你找到注入命令和检索结果的方法后,确定你的权限级别;使用 — whoami或尝试将无害文件写入受保护目录。 5....在 URL 中显示文件名的 Web 应用程序中。 Perl — 将管道符号附加|到文件名的末尾。 更改前的 URL: http://sensitive/cgi-bin/userData.pl?

    1.5K00

    Python 学习入门(28)—— 服务器实例

    它读取request中的URL地址,并在当前目录中找到对应的静态文件,并将文件的内容发送给客户端。...我们也应该注意到使用这些改进付出的代价。比如说,对于原始程序来说,request中的URL只具有指导意义,我们可以任意规定相应的操作。...即使在后面我们使用CGI增大了自由度,但相对于原始程序,我们依然是增加了自己的限制。有时候,程序的便捷与程序的自由度相抵触,程序员需要在两者之间取舍。...这样就可以让服务器与不同语言写的CGI脚本相配合,比如说使用Apache服务器与Perl写的CGI脚本,或者Python服务器与shell写的CGI脚本。...为了使用CGI,我们需要使用BaseHTTPServer包中的HTTPServer类来构建服务器。其实HTTPServer是TCPServer的子类,其使用方法也与TCPServer相同。

    97940

    Linux 日志分析工具之awstats详解「建议收藏」

    安装使用之前还是说说大致的工作原理,AWStats提供一系列的perl脚本实现:服务配置,日志读取,报表生成等功能。...(2).工作模式 AWStats的工作模式是这样的: 分析日志:运行后将这样的日志统计结果归档到一个AWStats的数据库(纯文本)里; 输出日志:分两种形式 一种是通过cgi程序读取统计结果数据库输出...(Linux中); 一种是运行后台脚本将输出导出成静态文件(Windows中); 五、awstats 安装与配置详解 1.环境准备 (1).安装yum源 1...root的,所以这里要修改权限,否则稍后*.pl将无法运行。...由于AWStats工程来自网上信息,但也作为CGI、 它可以与允许进入Perl、CGI与日志的大型网站主办提供商一起工作。

    4.1K20

    攻防世界web进阶区i-got-id-200超详解

    /usr/bin/perl use strict; use warnings; use CGI; my $cgi = CGI-...直接读取flag即可 ? ? 这个地方是读取目录的../ param() param()函数会返回一个列表的文件但是只有第一个文件会被放入到下面的接收变量中。...对正常的上传文件进行修改,可以达到读取任意文件的目的: 漏洞分析 这里大佬告诉我们要利用@ARGV这个全局变量 首先要了解Perl中的ARGV全局特殊文件句柄 ARGV:遍历数组变量@ARGV中所有文件名的特殊文件句柄...@ARGV:是个全局数组特殊变量,传给脚本的命令行参数列表 Perl 会将 perl 命令行参数列表放入到数组 @ARGV 中,而默认情况下,这些命令行参数是 Perl 的数据输入源,也就是 说Perl...解析,第二,第三个参数被认为是bash的参数,而不是第一个参数(命令)的参数 举个例子: bash -c ls / 会执行ls命令,列出当前目录,/会被当做bash的参数,没有意义,会找不到 如果我们想要列出根目录需要

    2.1K10

    Postfix + Extmail 企业邮件服务器搭建

    加密密码,此密码应与数据库密码同步 修改密码文件并导入数据库 vim /var/www/extsuite/extman/docs/init.sql 将init.sql文件导入数据库 5.将虚拟目录的模板拷贝到邮件服务器的主目录下...能够去数据库里读数据 1)修改vim /etc/dovecot/conf.d/10-mail.conf 2)修改vim /etc/dovecot/conf.d/10-auth.conf 3)修改如何在数据库里读取数据的文件...vmail vmail 3.extmail中更改cgi的属组属主,让vmail有权限执行 chown vmail:vmail -R /var/www/extsuite/extmail...4.extman中更改cgi的属组属主,让vmail有权限执行 chown vmail:vmail -R /var/www/extsuite/extman/cgi/ 先生成配置文件,再修改配置文件...Makefile.PL make && make install yum install -y *CGI yum install -y perl-GD yum install -y perl-GD

    4K30
    领券