The Philippine military says troops overran a bomb factory of Abu Sayyaf militants after a firefight that killed three insurgents and a soldier in the country's restive south.

Military commander Rear Adm. Reynaldo Yoma said troops clashed with 25 militants who also included one Malaysian on Basilan Island on Thursday.

The four-hour battle left one soldier dead and seven wounded, and on the side of the militants, three killed and three wounded.

The Abu Sayyaf, a loose grouping of around 400 Muslim rebels, has turned to ransom kidnappings, extortion and other crimes to survive years of battle setbacks dealt by U.S. military-backed Philippine offensives.